通过 id 集更新多个文档。猫鼬

Posted

技术标签:

【中文标题】通过 id 集更新多个文档。猫鼬【英文标题】:Update multiple documents by id set. Mongoose 【发布时间】:2013-12-04 12:02:01 【问题描述】:

我想知道 mongoose 是否有一些方法可以通过 id 集更新多个文档。例如:

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;
        ;
    );
;

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

Element.update('_id': ids, 'visibility': visibility, multi: true ,function(err, records)
    if (err) 
        return false;
    
);

其中 ids 是一个 id 数组,例如 ['id1', 'id2', 'id3'] - 样本数组。 查找同样的问题。

【问题讨论】:

【参考方案1】:

很可能是的。在mongodb查询中使用$in操作符调用更新。

db.Element.update(
    _id:  $in: ['id1', 'id2', 'id3']  ,
    $set:  visibility : yourvisibility  ,
   multi: true
)

你只需要找到如何在 mongoose 中实现 $in。

【讨论】:

是的,你是对的,$in 运算符也非常适合猫鼬。 我可以使用多重更新但使用保存命令吗?因为通过保存我也有验证 是否可以为不同的 _id 值更新可见性属性? 使用 multi: true 查询,您将能够为不同的 _id 值更新可见性属性@Vinay 这对我有用,使用猫鼬。 ``` Product.update(store: $in: [storeId], $set: disabled: true).then(ret => console.log(ret); ); ```【参考方案2】:

updateMany 函数中不需要 multi: true

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

                    ]
            
    ,
    
        $inc:  quantity: 100 

    )

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

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

                        ]
                
        )

【讨论】:

【参考方案3】:

更新与集合的指定过滤器匹配的所有文档。

let ids = ["kwwe232244h3j44jg3h4", "23h2u32g2h3b3hbh", "fhfu3h4h34u35"];
let visibility = true;

Element.updateMany(_id: $in: ids, 
    $set:  visibility  , 
   multi: true ,
   function(err, records)
       if (err) 
           return false;
       
);

know more

【讨论】:

以上是关于通过 id 集更新多个文档。猫鼬的主要内容,如果未能解决你的问题,请参考以下文章

验证多个猫鼬文档并更新

如何更新猫鼬中的多个文档?

如何更新猫鼬中的多个文档?

如何通过猫鼬(javascript)中的多个值查询数组内的对象?

使用猫鼬更新多个文档不起作用

嵌套模式/子文档对象中的猫鼬 findById() - 聚合