【问题标题】:show categories with express mongo使用 express mongo 显示类别
【发布时间】:2016-12-15 04:49:10
【问题描述】:

我在 mongo 中有一个数据,例如 根

 {'id':id,'name':'root','child'=['id1','id2','id3']}

chi1:

{'id':id1,'name':'chi1','child'=['id11','id12','id13']}

chi2

 {'id':id1,'name':'chi2','child'=['id21','id22','id23']}

chi11

 {'id':id1,'name':'chi11','child'=['id111','id112','id113']}

现在我想在这样的模板中显示类别:

root.name->chi1.name->chi11.name
         ->chi2.name

如果我们可以从父母那里查询孩子。

【问题讨论】:

  • 你能告诉我们你到目前为止做了什么吗?而且你的问题也不够清楚。
  • 作为这个问题的数据:stackoverflow.com/questions/38820071/… 我试图将 root 传递给模板,但我不知道如何从数据库中查询子信息,例如 chi1.name、chi11.name 到显示在模板上。

标签: javascript node.js mongodb express pug


【解决方案1】:

您可以尝试以下查询:-

db.collName.find({_id : {$in:['id1','id2','id3']}}).toArray(function(err, results){
     console.log(results); //Will give you array of child results.
})

现在你可以循环遍历结果数组,得到对应的孩子名字。

请参阅 $in-doc 以了解如何在查询中使用 $in

编辑:-

使用如下内容:-

function getResults(id, callback)
{ 
    db.collection.find({_id : parentId}).toArray(function(err, pres)
    {
        db.collName.find({_id : {$in:pres[0].child}}).toArray(
          function(err, results){
            console.log(results); //Will give you array of child results.
            console.log(pres[0]); // Result of root;

             callback(err, results, pres) ; //Return all the results
         })
     });
}

希望这会对你有所帮助。

【讨论】:

  • 我使用过猫鼬,我们可以通过 ID 从数据库中查询对象,但问题是如果我只将根传递给模板,我无法获取孩子的信息,例如在模板中显示的名称,因为在根对象中,我们只知道孩子的 id...所以我们必须回到控制器再次查询,玉模板是不可能的。
  • 您到底想做什么?在您的情况下,您必须查询两次。没有其他选择。您可以在一个函数中进行这两项查询,然后将所有结果发回并使用。
【解决方案2】:

Mongoose - finding subdocuments by criteria 使用 mongoose 4.0 填充是查询子对象的最佳解决方案 http://mongoosejs.com/docs/populate.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    相关资源
    最近更新 更多