Mongoose高效查找和填充

时间:2016-08-07 12:42:04

标签: node.js mongoose

我试图找出最有效的方法来查找和填充文档,其中一些文档引用了另一个集合,而另一些则没有。

示例:

var collectionA={
                 {
                 "topic":"TopicA",
                 "text";"TextA")
                 },
                 {
                  "topic":"Topic1",
                  "text":"Text1"}
                 }
                }

var collectionB={
                 {
                 "topic":"TopicB",
                 "text":"TextB"
                 "reference":["id","id"]
                 },
                 {
                 "topic":"Topic2",
                 "text":"Text2"
                 "reference":[]
                 }
                }

我有一个如下请求,允许我识别我想要的文件:

   req.body={"topic":["TopicA","TopicB"]}

在尽可能少的数据库调用中找到相关文档并填充它们以提供完全填充结果的最有效方法是什么:

{"topic":"TopicA","text":"TextA"},
{"topic":"TopicB","text":"TextB","reference":[{populated document}
{populated document}]},

我正在尝试使用类似的东西:

collections.find({"topic": $in req.body.top}, function(err,result){
    collections.populate(result,{path:'references'}, function (err,result){
//do something
    });
})

这是在正确的轨道上吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要在mongoose中引用其他文档,您需要使用Population

如果您想通过ID引用主题,则需要在模式中使用以下内容: time=max(time,H(i))