对于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": [] } ] } }