對於mongoose操做集合的方便之處確實不通常,但主要仍是你在引用中對集合的設計,不過mongoose在使用ref關聯集合的時候有限制和查出的集合的組合問題有點麻煩。不過沒關係,簡單易用就行。
數組
1.mongoose 中ref關聯文檔的用法
mongoose
2.mongoose中populate查詢關聯文檔
設計
3.查詢得到數組中單個集合
code
好比有集合:rem
{ "_id": 11111, "im": { "usergroup": [ { "name": "好友列表-2", "level": 1, "_id": "53c4820263256dc410e98727", "list": [ { "_user": { "nickname": "逐夢飛揚-2", "_id": 22222, "icon": "/default/heads/2.png" } }, { "_user": null }, { "_user": null }, { "_user": null }, { "_user": null }, { "_user": null } ] }, { "_id": "53c488bf95ad1de01756db88", "name": "test usergroup", "level": 1, "list": [] } ] } }
上述的_user表示關聯文檔,若是你只想獲得usergroup中的一個;結合條件爲{'usergroup.$':1}就能夠獲得知足條件的一個代碼以下:文檔
UserModel.User.findOne({_id:11111,'im.usergroup._id':'53c488bf95ad1de01756db88'},{'im.usergroup.$':1}) .populate('im.usergroup.list._user',{icon:1,nickname:1,_id:1,name:1,remark:1}) .exec(function(err, ug){ cb(err,ug); })
上述UserModel.User是用戶的mongoose modelio
查詢後能夠獲得:function
{ "_id": 11111, "im": { "usergroup": [ { "_id": "53c488bf95ad1de01756db88", "name": "test usergroup", "level": 1, "list": [] } ] } }