2012-05-25 91 views
2

我已經得到了看起來像這樣收集用戶:如何通過密鑰獲取mongo集合的孩子?

{ 
_id: myid, 
name : 'blabla', 
ia : { 
     [0]-> 'an id', 
     [1]-> 'a second id' 
     } 
} 

,我想只有我的IA第一個ID,所以我嘗試類似的東西:

User.find({ _id: id, ia :{ key : indexia} }, ['ia']).populate('ia').run(rendu); 

其中id =本身份識別碼,並且indexia = 0。

如果我不把這部分:「ia:{key:indexia}」我得到我所有的ia ...但我只想要一個。

希望我清楚。 謝謝

+0

我不確定我是否正確理解了您的請求。你究竟得到了什麼,你想得到什麼?你有實際/預期的JSON發佈? – Pierre

+0

我的收藏: { 「_id」:{ 「$ OID」: 「4fac50bda7087c0c14000001」}, 「IA」: 「4fbec72f7f0257a815000004」, 「4fbed51b53795ffc06000001」, 「4fbee32403949f7c03000001」], 「郵件」:「一@一。FR」, 「名稱」: 「一」, 「密碼」: 「5267768822ee624d48fce15ec5ca79cbd602cb7f4c2157a516556991f22ef8c7b5ef7b18d1ff41c59370efb0858651d44a936c11b7b144c48fe04df3c6a3e8da」} 的信息Ive得到:用戶_id(4fac50bda7087c0c14000001)和IA的密鑰參考:(第一,第二或第三個) 而且我也想檢索一個ia的id,例如:4fbed51b53795ffc06000001 – user1418079

回答

0

感謝您的幫助 據工人那樣:

User.find({ _id: id }).only('ia').slice('ia', indexia, 1).populate('ia').run(rendu); 

唯一的(「IA」)唐噸的工作,但不是一個大問題。

2

MongoDB find()命令旨在匹配整個文檔。

當您運行下面的查詢

{ _id: id, ia :{ key : indexia} } 

...這意味着「裏_id等於idia等於對象{key:0}。這可能是而不是你想要什麼。

如果我不把這部分:「ia:{key:indexia}」我得到我所有的ia ...但我只想要一個。

這聽起來像你想要返回一個給定的文件。該文檔是here。在你的情況下,它看起來像這樣:

find({ _id: id}, { 'ia.0' : 1 }) 

查找的第一部分將查找文檔。第二部分將返回特定的字段。

0

你的最愛似乎有模式:

{ "_id" : "id", 
    "ia" : ["id1","id2","id3"], 
    etc. 
} 

在這種情況下,查詢得到公正的「IA」字段的第一個「身份證」將是:

find({}, { "ia" : {$slice:1 } }) 

你可以閱讀更多關於$ slice運算符here。 Mongoose在query page上記錄對$ slice運算符的支持。 希望這有助於!

相關問題