我有一个包含对象的 json 数组,我正在执行以下循环以使用 mongoose 将数据向上插入(插入或更新)到 MongoDB 中:
var currentMiniApp;
function retResult(err) {
if (err) {
console.log(err);
}
}
for (var i = 0 ; i < miniappData.miniapps.length; i++) {
currentMiniApp = new MiniApp(miniappData.miniapps[i]);
MiniApp.findOneAndUpdate(
{id: currentMiniApp.id},
currentMiniApp,
{upsert: true},
retResult);
}
如何在不使用循环的情况下在一条命令中完成?
我希望文档将包含数据数组中的项目
我的数据如下:
{
"miniapps" :
[
{
"id":"app1",
"icon" : "256fko6.png"
},
{
"id":"app2",
"icon" : "icon60x60.png"
}
]
}
最佳答案
考虑使用 $addToSet
运算符 $each
upsert 中的修饰符 update 强>。此更新操作将多个值添加到数组,除非这些值已经存在,在这种情况下 $addToSet
对该数组不做任何事情:
var miniAppids = [];
for (var i = 0 ; i < miniappData.miniapps.length; i++) {
currentMiniApp = new MiniApp(miniappData.miniapps[i]);
miniAppids.push(currentMiniApp.id);
};
MiniApp.update(
{ "id": { "$in": miniAppids } },
{ "$addToSet": { "miniapps": { "$each": miniappData.miniapps } } },
{ "upsert": true },
retResult
)
关于node.js - 在 Mongoose 中将数组更新到文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047241/