gpt4 book ai didi

javascript - 更新 mongodb 嵌入式数组中的所有元素

转载 作者:行者123 更新时间:2023-11-30 20:06:04 25 4
gpt4 key购买 nike

我有一个用户文档,里面有一组注释(对象)。我正在尝试为数组中的所有项目设置一个新字段 (_id)。但它没有触及任何东西。这是我当前的代码,我是否遗漏了什么?

 db.users.update(
{'notes.added': '2018-10-22 04:42:45.336Z'},
{'$set': {'notes.$._id': new ObjectId()}},
{multi: true}
);

此外,我的目标是所有笔记,其中添加的日期等于该日期,是否可以在不指定参数的情况下定位所有笔记?

最佳答案

您只需在查询参数中包含数组。使用像 notes.added 这样的属性将不起作用。 $ 运算符需要查询运算符中的数组进行迭代。

db.users.update({notes:{$exists: true}}, {$set:{"notes.$._id": new ObjectId()}}, {multi:true});

希望对您有所帮助。

编辑1:如果您有多个文档并且想要编辑所有文档中的所有数组,则需要像这样使用 updateMany:

db.users.updateMany({notes:{$exists: true}}, {$set:{"notes.$[elem]._id": new ObjectId()}},{arrayFilters:[{"elem.a" : {$gte: 0}}]});

其中 arryFilters 是对数组元素的过滤器。此查询将更新属性 a 的值大于或等于 0 的所有数组。这样做时,您也可以在查询中使用 notes.property。只需将其括在“”中即可。

关于javascript - 更新 mongodb 嵌入式数组中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52923116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com