如何检索流星中的子数组元素

时间:2015-02-05 11:03:05

标签: mongodb meteor

我正在使用以下文档

  {
    "_id" : 123344223,
    "firstName" : "gopal",
    "gopal" : [ 
    {
     "uuid" : "123",
     "name" : "sugun"
    }, 
    {
     "uuid" : "456",
     "name" :"kiran"
    }
             ]
}

我想从数组的第一个文档中检索名称并将其打印在表格中......

这是我试过的

Template.table.helpers({
  ProductManager: function () {
    return ProductManager.find({_id:123344223},{gopal:{$elemMatch:{uuid:"123"}}});
  }
})    

其中ProductManager是我的收藏 并在common.js中定义

ProductManager = new Meteor.Collection("ProductManager"); 

这是我的模板

<template name="table">
<table>
<thead>
<tr>
<th>NAME</th>
<th>UUID</th>
</tr>
</thead>
<tbody>
{{#each ProductManager}}
<tr>
<td>{{name}}</td>
<td>{{uuid}}</td>
</tr>
{{/each}}
</tbody>
</table>

当我尝试这个时

ProductManager.find({_id:123344223},{gopal:{$elemMatch:{uuid:"123"}}}); 

我可以在mongo shell中获得这个

{
 "_id" : 123344223,
"gopal" : [ 
{
 "uuid" : "123",
 "name" : "sugun"
}
}

但不能在表格中打印名称和uuid ....... plzz帮我解决这个问题...... 提前致谢

1 个答案:

答案 0 :(得分:1)

您基本上是遍历查询结果列表而不是数组。要解决此问题,请查询特定文档:

使用ProductManager.findOne代替ProductManager.find(),因为您正在寻找特定文档。

遍历gopals数组中的所有内容而不是光标本身:

{{#each ProductManager.gopal}}
....
{{/each}}

而不是循环遍历{{#each ProductManager}}...