在流星中查找数组中的子元素

时间:2015-02-06 10:20:10

标签: mongodb meteor

我正在使用以下文档

{
"_id" : 123344223,
"firstName" : "gopal",
"gopal" : [ 
    {
        "uuid" : "123",
        "name" : "sugun",
        "sudeep" : [ 
            {
                "uuid" : "add32",
                "name" : "ssss"
            }, 
            {
                "uuid" : "fdg456",
                "name" : "gfg"
            }
        ]
    }, 
    {
        "uuid" : "222",
        "name" : "kiran"
    }
]
}

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

这是我试过的

Template.table.helpers({
ProductManager: function () {
return ProductManager.findOne({_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.gopal.sudeep}}
<tr>
<td>{{name}}</td>
<td>{{uuid}}</td>
</tr>
{{/each}}
</tbody>
</table>

当我尝试这个时

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

我可以在mongo shell中获得这个

{
    "_id" : 123344223,
    "gopal" : [ 
        {
            "uuid" : "123",
            "name" : "sugun",
            "sudeep" : [ 
                {
                    "uuid" : "add32",
                    "name" : "ssss"
                }, 
                {
                    "uuid" : "fdg456",
                    "name" : "gfg"
                }
            ]
        }
    ]
}

但是不能打印&#34; sudeep&#34;在表中....... plzz帮助我解决这个问题...提前致谢

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

{{#each ProductManager}}
  {{#with this.gopal.sudeep}}
      ...
  {{/with}}
{{/each}}

答案 1 :(得分:0)

如果您知道文档的ID,则可以编写此查询

ProductManager.find({_id: productID}, {"gopal.sudeep":1});

此查询返回一个光标,其中包含gopal.sudeep中的所有数据 ,然后您可以在模板中迭代此光标以显示所有元素的名称和uuid

所以在js文件中你可以写

Template.table.helpers({
     ProductManager: function () {
       return ProductManager.find({_id: youid}, {"gopal.sudeep":1});
     }
});

并在您的模板文件

<tbody>
  {{#each ProductManager}}
    <tr>
      <td>{{name}}</td>
      <td>{{uuid}}</td>
    </tr>
  {{/each}}
</tbody>
祝你好运!