对于mongoose操作集合的方便之处确实不一般,但主要还是你在引用中对集合的设计,不过mongoose在使用ref关联集合的时候有限制和查出的集合的组合问题有点麻烦。不过不要紧,简单易用就行。
1.mongoose 中ref关联文档的用法
2.mongoose中populate查询关联文档
3.查询获得数组中单个集合
比如有集合:
{ "_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 model
查询后可以得到:
{ "_id": 11111, "im": { "usergroup": [ { "_id": "53c488bf95ad1de01756db88", "name": "test usergroup", "level": 1, "list": [] } ] } }
mongoose 查询操作的高级应用,布布扣,bubuko.com
原文地址:http://my.oschina.net/antianlu/blog/290899