Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Mongoose多重更新大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想更新具有不同值的多个文档.

我的数据库看起来像这样.

[
    {
        "_id": 1,"value": 50
    },{
        "_id": 2,"value": 100
    }
]

查询返回错误,因为我传递的是数组而不是$set中的对象.

@H_310_9@model.@R_618_9531@e({_id: {$in: ids}},{$set: ids.value},{multi: truE};

我希望我的数据库看起来像这样

[
        {
            "_id": 1,"value": 4
        },{
            "_id": 2,"value": 27
        }
    ]

解决方法

首先你的update()查询不行.

请参阅此here的文档

假设您当前的数据库模型包含这样的文档(如您所描述的那样):

[
    {
        "_id": 1,"value": 100
   }
];

并且您在下面的数组中包含要使用当前db的文档修改的对象(即文档),如下所示:

idsArray: [
    {
        "_id": 1,"value": 4
    },"value": 27
    }
];

根据我对mongodb& amp ;;的经验mongoose,我不认为你可以使用单行查询更新所有文档(这是你想要做的)..(P.s.我不知道这个,所以我不确定这个…)

但是为了使你的代码工作,你将做这样的事情:

想法:循环遍历docs中的每个doc,即idsArray并在其上调用update().

那么,这是代码

idsArray.forEach(function(obj) {
    Model.@R_618_9531@e({_id: obj._iD},{$set: {value: obj.value}});
});

在上面的代码中,我假设你在db docs中有_id值,就像它们在上面写的那样(即“_id”:1)..但是如果它们像这样“_id”:ObjectId(‘1’)

[
  {
    "_id": ObjectId('1'),"value": 50
  },.....
  .....
]

那么你需要在update()查询中将_id转换为ObjectId(obj._id).
所以你会这样做的.

var ObjectId = require('mongodb').objectID;

idsArray.forEach(function(obj) {
   Model.@R_618_9531@e({_id: ObjectId(obj._id)},{$set: {value: obj.value}});
});

附:在前进之前确认它(即_id)..

希望这可以帮助.

干杯,

大佬总结

以上是大佬教程为你收集整理的node.js – Mongoose多重更新全部内容,希望文章能够帮你解决node.js – Mongoose多重更新所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。