2012-07-20 75 views
2

我的架构看起来像MongoDB:如何查找嵌入文档中的项目数量?

name: 
value: 
p_vars: { 
    name1: {}, 
    name2: {}, 
} 

我想指望有多少项目在p_vars在那里。

思想,解释器是JavaScript,我试过

db.collection.findOne().p_vars.length 

但没有返回

答案应该是

鉴于以上,答案应该是2(两个项目name1name2

+0

'p_vars'是一个对象。对象在JavaScript中没有长度。为什么你期望这个工作? – 2012-07-20 22:13:30

+0

我想知道有多少物品在p_vars中,比如'name1' +'name2' + .... – daydreamer 2012-07-20 22:14:54

+0

的计数因为这是一个JavaScript对象,所以这个问题可能有所帮助:http://stackoverflow.com/questions/ 956719 /数元素-IN-A-的javascript对象的- – Eduardo 2012-07-20 22:16:11

回答

3

The simp免得这里的解决方案是将你的模式改为使用p_vars数组,这听起来像是你想要的。相反,如果模式是:

name: 
value: 
p_vars: [ 
    name1: {}, 
    name2: {}, 
] 

然后按照你的想法db.collection.findOne().p_vars.length命令将返回2。

对于原始模式,我认为你的唯一选择是编写一个JS函数来迭代和手动计算元素。