如何从集合中检索所需字段的值并将其存储在另一个集合中

时间:2016-05-05 07:37:56

标签: node.js mongodb express pug

我正在使用节点js和mongodb。我有这个路线代码

router.get('/taglist', function(req, res) {
    var db = req.db;
    var collection = db.get('tagcollection');
    collection.findOne({},{},function(e,docs){
        res.render('taglist', {
            "taglist" : docs
        });
    });
});

这是为了从数据库中获取所有标记列表,并将响应呈现到taglist.jade,如下所示 -

extends layout

   block content
     h1.
         Tag List
     ul
         each tag, i in taglist
          li

                #{tag.tagname}= tag._id

现在我想搜索已存储在我的tagname集合中的taglist,并希望存储属于标记名的ID,并将其存储在另一个集合中。

现在我的代码只是查找所有tagname并在浏览器中打印所有tag_id。我是Web应用程序的新手,刚刚开始使用node和MongoDB。

更新

第一个代码获取所有tagcollection数据,第二个代码显示每个文档的所有id。但这不是我所期望的。

我正在解释我的期望 - 假设tagcollection包含2个或更多documents

{
    "_id" : ObjectId("ksjsed3cccjdkmx"),
    "tagname" : "dinner"
}
{
    "_id" : ObjectId("skd9a93cccb8kdn"),
    "tagname" : "music"
}

依旧...... 首先,我想搜索music代码 如果我在music中找到了tagcollection标记,那么它会显示id music个标记,并将此id存储在新集合中(例如newtagcollection 1}})

1 个答案:

答案 0 :(得分:1)

router.js:

router.get('/searchtag/:tag', function(req, res) {
    var db = req.db;
    var collection = db.collection('tagcollection');
    collection.findOne({ tagname: req.params['tag'] }, function(e, result) {
        res.render('searchtag', { tag: result });
    });
});

searchtag.pug:

extends layout

  block content
    h1.
      Tag Search

    if tag
      p= tag.tagname + ' = ' + tag._id;
    else
      p Tag not found!