文档参考查询示例

时间:2014-05-14 14:32:18

标签: mongodb

如果我选择使用结构为Document ReferencesMaterialized Paths而不是简单的Embedded Documents,我该如何显示相同的结果?

例如,如果我有嵌入式文档,我只需:

db.col.find({'user' : 'foo'}) 

并返回:

{'user' : 'foo',
 'posts' : [ {}, 
             {},
             {} 
  ]
}

我应该使用哪个命令将帖子显示为该用户的嵌入式数组?或者这只能在客户端发生?

1 个答案:

答案 0 :(得分:1)

如果是文件参考,

用户集合将包含:

{
  _id : "foo",
  // users details
}

和帖子集:

{
   _id: "postid",
   author: "foo"
   // other fields
}

在这种情况下,

1)首先进行查询以从用户集合中获取用户标识。

2)然后将用户ID发送到posts集合以获取所有帖子

var user = db.users.find({_id : "foo"}); 

//这用于获取用户详细信息或验证用户,并且仅在验证后才需要提取帖子

var posts = db.posts.find({author:  user._id });

在引用文档时,服务器的往返很明显。

我不确定你是如何使用这种情况的物化路径,让我知道它的数据结构,我将能够提到基于此的查询。