如果我选择使用结构为Document References的Materialized Paths而不是简单的Embedded Documents,我该如何显示相同的结果?
例如,如果我有嵌入式文档,我只需:
db.col.find({'user' : 'foo'})
并返回:
{'user' : 'foo',
'posts' : [ {},
{},
{}
]
}
我应该使用哪个命令将帖子显示为该用户的嵌入式数组?或者这只能在客户端发生?
答案 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 });
在引用文档时,服务器的往返很明显。
我不确定你是如何使用这种情况的物化路径,让我知道它的数据结构,我将能够提到基于此的查询。