[英]mongoDB: Unable to obtain full object response when reference exists in the object
[英]Mongodb, get full object from a reference
是否存在任何允许我们使用Mongodb从引用访问完整对象的东西?
例如,我有一个用户和一个类型集合。 用户具有一个Type,该Type与对Type对象的引用一起存储。
是否可以在不延迟加载的情况下使用Type访问完整的User对象?
谢谢大家
是; 如果您乐于使用猫鼬,则可以使用其populate()
函数:
填充路径不再设置为其原始_id,通过在返回结果之前执行单独的查询,将其值替换为从数据库返回的猫鼬文档。
http://mongoosejs.com/docs/populate.html
因此,对于您的User
,在执行查询以派生该用户时,类似这样的操作将设置Type
实例:
User.findOne({ username: 'Fred Bloggs' }).populate('type')
.exec(function (err, user) {
...
MongoDB不执行联接。 如果不进行一项以上的操作,就不可能获得将完整Type
对象嵌入到User
文档中的信息(我想您必须用术语“延迟加载”它)。 Mongoose populate()
函数只是为您处理多余的查询,并为您替换文档中的id-它会执行多个查询,就像执行相同操作的任何其他客户端一样。 您应该仔细考虑正在执行的查询类型,以确定将Type
对象反规范化为User
文档是否是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.