2012-07-20 102 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函數來迭代和手動計算元素。