按ID设置更新多个文档.猫鼬

use*_*708 16 mongoose mongodb

我想知道mongoose是否有一些通过id set更新多个文档的方法.例如:

for (var i = 0, l = ids.length; i < l; i++) {
    Element.update({'_id': ids[i]}, {'visibility': visibility} ,function(err, records){
        if (err) {
            return false;
        } else {
            return true;
        };
    });
};
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果猫鼬可以这样做:

Element.update({'_id': ids}, {'visibility': visibility}, {multi: true} ,function(err, records){
    if (err) {
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

其中id是一个id数组,如['id1','id2','id3'] - 样本数组.同样的问题.

Sal*_*ali 42

很可能是的.并且在mongodb查询中使用$ in运算符进行更新调用.

db.Element.update(
   { _id: { $in: ['id1', 'id2', 'id3'] } },
   { $set: { visibility : yourvisibility } },
   {multi: true}
)
Run Code Online (Sandbox Code Playgroud)

您所需要的只是找到如何在mongoose中实现$ in.

  • 是否可以针对不同的_id值更新可见性属性? (7认同)
  • 使用{multi:true}查询,您将能够以不同的_id值@Vinay更新可见性属性 (5认同)
  • 是的,您是对的,$in 运算符也适用于猫鼬。 (2认同)

Abh*_*ngh 13

updateMany函数中不需要 { multi: true }

db.collectionName.updateMany(
    {
        _id:
            {
                $in:
                    [
                        ObjectId("your object id"),
                        ObjectId("your object id")

                    ]
            }
    },
    {
        $inc: { quantity: 100 }

    })
Run Code Online (Sandbox Code Playgroud)

我想再补充一点,你可以使用$in来获取多个文档

 db.collectionName.find(
        {
            _id:
                {
                    $in:
                        [
                            ObjectId("your object id"),
                            ObjectId("your object id")

                        ]
                }
        })
Run Code Online (Sandbox Code Playgroud)