当前位置: 首页 > 知识库问答 >
问题:

按id集更新多个文档。猫鼬

方宏才
2023-03-14

我想知道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']-示例数组。对于find,同样的问题。

共有3个答案

方嘉志
2023-03-14

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

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

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

了解更多

韩祯
2023-03-14

在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")

                        ]
                }
        })
公孙令秋
2023-03-14

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

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

你所需要的就是找到如何在猫鼬中实现$in。

 类似资料:
  • 问题内容: 我发现以下脚本: MongoDB具有“ multi”标志,用于更新多个文档,但是我无法使它与mongoose一起使用。这还不被支持还是我做错了什么? 问题答案: 目前,我认为Mongoose中存在一些问题,请参阅:https : //groups.google.com/forum/#%21topic/mongoose- orm/G8i9S7E8Erg 和https://groups.g

  • 我想使用mongoose从多个文档更新多个子文档。 我目前的代码是: 模式的一部分是: 但是这段代码只更新id arr中的最后一个元素。

  • 我正在寻找一种通过文档id而不是字段进行查询的方法。 可能是这样的: 在这种情况下,searchInput是一个不完整的documentId。 我在Stackoverflow上看到了一个解决方案,但它不适用于Flatter:https://stackoverflow.com/a/52252264/8539070 要记住的另一件事是,我正在尝试显示集合中与id的某些部分匹配的所有文档的列表。 谢谢你

  • 我试图更新一个子文档(有效),然后更新除上一个子文档之外的多个子文档。基本上,每次

  • 问题内容: 我的文件 夹Folder 具有以下架构: 因此,对于每个页面,我可以拥有许多权限。在CMS中,有一个面板,其中列出了所有文件夹及其权限。管理员可以编辑一个权限并保存。 我可以很容易地用其权限数组保存整个 Folder 文档,其中只修改了一个权限。但是我不想保存所有文档(实际架构中包含更多字段),所以我这样做了: 但是问题是 烫发 总是 不确定的 !我试图以这种方式“静态地”获取许可:

  • 问题内容: 我是python和django rest的新手。但我很困惑。最好的方法是什么 更新django rest框架中的多对多关系。我看了文件 时,以 指定了直通模型的ManyToManyField设置为只读。 如果显式指定一个指向ManyToManyField的关系字段 对于直通模型,请确保将read\u only设置为True。 如果我有密码 这将返回技能作为对象列表。我没有办法更新 他们