2016-01-20 210 views
0

我想学习流星/蒙戈的列表,但每次你觉得时间取得进步,“简单的事情”似乎完全无法实现......MongoDB的:返回所有的子文档

我有一个很简单的文件:

_id : abcd 
field : xyz 
subdoc [ 
    {_id: 123, email: abc, name: abc} 
    {_id: 234, email: abc, name: xyz} 
    {_id: 853, email: abc, name: pmu} 
] 

而且我想返回所有我的子文档的列表。 放在另一个词,我想用“每一个”,以获取列表像这样的,在我的HTML模板:

_id: 123 email: abc name: abc 
    _id: 234 email: abc name: xyz 
    _id: 853 email: abc name: pmu 

但我完全无法实现与.DOT标记任何结果.. 任何线索?

非常感谢..

+0

什么是你正在关闭的查询? –

+0

您是否尝试打印响应正文?或者使用任何打印语句? – AlwaysNull

+2

'db.collection.findOne({},{'subdoc':1,'_id':0})'或'db.collection.find({},{'subdoc':1,'_id':0} )'取决于你想要什么。 – styvane

回答

0
myCollection.find({_id: 'abcd'}).fetch().forEach(function(item) { return item.subdoc; }); 

甚至与findOne简单

myCollection.findOne({_id: 'abcd'}).subdoc; 

注:

在2情况下,只有一个文件是由_id返回(因为_id是唯一的)你将得到subdoc数组。

如果您使用第一个解决方案并且您的查询返回多个文档,那么您将得到一个数组数组。

如果你想要的是从数组的数组一个平面数组,你需要扁平化数组

有下划线,这将是

flattened = _.flatten(nestedArray) 
+0

有很多延迟,对不起。它的功能就像一个魅力......谢谢。 顺便说一句,如果我想要检索嵌套文档中的特定字段,那么最简单的方法是什么? – nerotulip

+0

使用array.map(function(item){return item.field}) – MrE

相关问题