Mongodb,从引用中获取完整对象

时间:2014-08-21 08:02:54

标签: mongodb

是否存在允许我们使用Mongodb从引用访问完整对象的任何内容?

例如,我有一个User和一个Type集合。用户具有Type,存储时带有对Type对象的引用。

是否可以使用Type访问完整的User对象,而不进行延迟加载?

全部谢谢

2 个答案:

答案 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文档是否是一个好主意。