繁体   English   中英

如何在node.js应用程序的mongodb中按层次结构顺序插入数据?

[英]How to insert data in hierarchical order in mongodb in node.js application?

我正在尝试在node.js应用程序的mongodb中插入数据。 但是我的要求是每次在文档中创建新文章。

0:Object
_v:0
_id:"56e1825c9d7b67156d2f38b2"
actor:"FirstActor"
productName:"Kernal"

1:Object
_v:0
_id:"56e1832a9c363cd405d980ee"
actor:"SecondActor"
productName:"Kernal"

我的代码每次都创建一个具有唯一ID的新对象。 我想要的是这样的:

0:Object
_v:0
_id:"56e1825c9d7b67156d2f38b2"
actor:{"FirstActor","Second Actor"}
productName:"Kernal"

如果productName相同,则不应创建新对象。

我写的代码看起来像:

  app.post('/addActor',function(req, res) {

        console.log("Calling to Adding Actor");
        console.log(req.body);
        impactMap.create({

            productName : req.body.productName,
            actor : req.body.actor,

            /*done : false*/
        }, function(err, data) {
            if (err)
                res.send(err);

            // get and return all the todos after you create another
            impactMap.find(function(err, data) {
                if (err)
                    res.send(err)
                res.json(data);
            });
        });

    });

每次都在创建一个新对象,因为您每次都在调用create 您正在寻找的是upsert

impactMap.updateOne(
  { productName: req.body.productName },
  { $push: { actor: req.body.actor } },
  { upsert: true }
}, function (err, data) {
  // callback code can stay the same
});

这可能不适用于现有文档,因为您似乎没有以actor作为数组创建它们。 您将需要像这样更新模型:

mongoose.model('impactMap', {
  ...
  actor: [{ type: 'string' }],
  ...
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM