[英]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.