是否存在允许我们使用Mongodb从引用访问完整对象的任何内容?
例如,我有一个User和一个Type集合。用户具有Type,存储时带有对Type对象的引用。
是否可以使用Type访问完整的User对象,而不进行延迟加载?
全部谢谢
答案 0 :(得分:1)
是;如果您乐意使用猫鼬,那么您可以使用其populate()
功能:
已填充的路径不再设置为其原始_id,它们的值将替换为从数据库返回的mongoose文档,方法是在返回结果之前执行单独的查询。
http://mongoosejs.com/docs/populate.html
因此,对于您的User
,在执行查询以派生所述用户时,类似这样的内容会设置Type
实例:
User.findOne({ username: 'Fred Bloggs' }).populate('type')
.exec(function (err, user) {
...
答案 1 :(得分:0)
MongoDB不进行连接。如果没有多个操作,我就无法获取将Type
文档中的完整User
对象嵌入的信息(我想你必须" lazyload"它,在你的术语中)。 Mongoose populate()
函数只是处理额外的查询并将id替换为您的文档 - 它执行多个查询,就像执行相同操作的任何其他客户端一样。您应该仔细考虑您正在做什么类型的查询,以确定将Type
对象反规范化为User
文档是否是一个好主意。