【发布时间】:2017-12-31 10:49:08
【问题描述】:
我是 MongoDB 新手,想使用 Meteor 模板在表格中显示查询到的数据。
我有一个名为“infoData”的集合,其结构如下:
第一个文件:
{
"_id" : "A-89273498720",
"myItems" : [
{
"itemId" : "item_1",
"username" : "Homer",
"purpose" : "justBecause",
},
{
"itemId" : "item_2",
"username" : "March",
"purpose" : "justBecause2",
},
{
"itemId" : "item_3",
"username" : "Maggie",
"purpose" : "justBecause3",
}
]
}
第二份文件:
{
"_id" : "B-564548461117",
"myItems" : [
{
"itemId" : "item_4",
"username" : "Lisa",
"purpose" : "justBecause4",
},
{
"itemId" : "item_5",
"username" : "Lisa",
"purpose" : "justBecause5",
},
{
"itemId" : "item_6",
"username" : "Bart",
"purpose" : "justBecause5",
}
]
}
现在我需要使用“itemId”作为查询运算符来检索“itemId”以及“用户名”和“用途”。 “itemId”是唯一的。我的第一个问题是获取数据。例如,我尝试这样做以获取单个“itemId”字段“item_2”:
infoData.findOne({"myItems.itemId": "item_2"}, {_id: 0, 'myItems.$': 1})
得到与
相同的结果infoData.findOne(
{
'myItems.itemId': "item_2"
},
{
'_id': 0, 'myItems': {$elemMatch: {'itemId': "item_2"}}
})
我不确定这是否是我需要的结果,因为当我将此查询放入 JSON.stringify() 以查看控制台中的数据时,我会看到包含“item_2”的文档数组中的所有字段和对象不仅是“itemId”字段的数据“item_2”。获取查询的所有字段“itemId”、“用户名”和“目的”(仅包含 item_2 的对象)以便我稍后可以在表中对其进行迭代的可能性也适用于我。
第二个问题是我需要在表格中显示数据。
所以我写了这个助手:
'itemInfoDisplay': function() {
if (Meteor.userId()) {
var itemInfos= infoData.findOne(
{"myItems.itemId": "item_2"}, {_id: 0, 'myItems.$': 1});
return itemInfos
}
}
并希望在表格中显示数据:
{{#each itemInfoDisplay}}
{{#each myItems}}
<tr>
<td><h4>{{ itemId }}</h4></td>
</tr>
{{/each}}
{{/each}}
我知道代码和 HTML 模板有问题。我猜mongoDB查询的结果不是数组?有可能做到一个吗?使用的 mongo 查询是满足我需求的正确解决方案吗?
最后,我只需要获取分配给特定“itemId”的所有数据并将其显示在表格中。如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: arrays mongodb templates meteor mongodb-query