问题标签 [mongodb-update]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1435 浏览

mongodb - 线程“main”com.mongodb.MongoWriteException 中的异常:更新中未使用标识符“element”的数组过滤器

线程“main”com.mongodb.MongoWriteException 中的异常:更新中未使用标识符“element”的数组过滤器 { $set: { leave_history: { leave_history.$[element].pl_used: 6, leave_history.$[element ].cl_used: 6, leave_history.$[element].sl_used: 6 } } } at com.mongodb.client.internal.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:1060) at com.mongodb.client.internal.MongoCollectionImpl.executeUpdate (MongoCollectionImpl.java:1037) 在 com.mongodb.client.internal.MongoCollectionImpl.updateOne(MongoCollectionImpl.java:622) 在 MongoDBExample.displayempDocs(MongoDBExample.java:226) 在 MongoDBExample.main(MongoDBExample.java:253)

考虑文件

ali@MongoDB>db.employees.find({$and : [{empno:7839},{leave_history:{$exists:true}}]}).pretty()

我正在尝试更新字段 [leave_history],它是包含其他四个字段的子文档数组。具体来说,pl_used、cl_used 和 sl_used 字段需要更新。使用了以下代码段

但这引发了上述异常。异常是什么意思?是否有另一种方法可以使用子文档数组更新多个字段?

您好,Joe,我有 Mongo Shell 所需的查询。这是我正在使用的

当我尝试在 Java 程序中复制它时遇到了问题。

0 投票
3 回答
2428 浏览

python - MongoDB 使用带有更新的 $cond ($inc)

有没有办法在更新中使用 $cond 和 ($set, $inc, ...) 运算符?(MongoDB 4.2)如果条件满足,我想通过 $inc 用“myDataInt”更新文档中的字段,否则保持原样:

但是,这会在 pymongo 中出现错误:

在这种情况下,有什么想法可以避免在更新之前使用 find() 吗?


更新:

如果我使用 Joe 提到的方法,由于在 update_many() 中使用“list”而不是“dict”作为参数,PyMongo (v3.10.1) 将引发异常:


最终出现此错误:

0 投票
0 回答
22 浏览

mongodb - 如何根据条件将对象推送到 MongDB 嵌套数组中?

假设 MongoDB 文档(表)comment

我需要在 MongoDB 中编写查询以将对象推送到andRPLY_AGREED的位置。comment _id = 5ea7182e6dab0211980cbd57 reply _id = 5ea718376dab0211980cbd58

0 投票
2 回答
372 浏览

mongodb - MongoDB - 更新 TTL 索引值

我正在尝试更新文档中到期日期的值。这是我每次想要更新文档时用来设置索引的 Node.js 代码:

问题是我将 expires_on 日期设置为明天的日期,并且该值在数据库中设置正确,但它会在几秒钟内到期。我更新此字段的方式有问题吗?我不知道如何更新此文档,使其在上次更新的 expires_on 日期过期。

我注意到您无法更新 MongoDB 中的索引,但我要在这里更新索引吗?当我尝试更改值而不是索引本身时,这不是不同吗?

0 投票
1 回答
88 浏览

node.js - Mongoose/MongoDB同时更新子文档数组时,它更新但找不到稍后更新的文档

我有一个包含子文档数组的文档(大小为 6),然后我同时删除 5 个元素,它完美地更新了数组,但是更新后找不到文档,这里是更新它的代码

这是结果

所以首先我从数组中拉出 5 个元素,然后我拉出最后一个元素,正如您在结果中看到的那样,所有这些元素都通过更新完美地从数组中删除,但其中一些无法到达他们更新的文档,这怎么可能?

0 投票
0 回答
43 浏览

mongodb - 如何加快大型集合中的 MongoDB 数据类型更改?

我们有很多字符串存储在应该有小数的地方。我正在尝试使用它来转换它们。但它真的很慢。我觉得只是获取所有要更改的记录的列表,然后进行一次巨大的更新可能会更快吗?我做错了什么,这太慢了吗?

我们确实有 1800 万条记录,其中大部分是 type:string。

查询实际上没有显示在上面,并且是:

0 投票
2 回答
1038 浏览

python - $push 和 $set 在同一个更新查询中,条件为 $cond pymongo mongodb

我正在尝试更新我的收藏

对于单,对象需要更新状态和更新时间。

输入对象 id 作为id新状态作为当前status

Condition 如果与in DBnew status不同status,则需要$push new statustimestampactivity_log数组。并更新记录的更新updated_timestatus

如果new status和之前的状态相同,那么updated_time将被更新。

是否可以在 pymongo 中使用单一更新来做到这一点?

0 投票
0 回答
42 浏览

mongodb - (MongoDB)聚合(.out)将值移动到错误的字段

我实际上正在使用 express js 和 mongodb 4.2.7 创建一个自动完成网站栏,并使用 lat & lon 来避免使用地理编码 api。

这是我的数据库的格式:

如您所见,我有很多字段对于我的网站而言不是必需的,最重要的是,我不需要为街道中的每个数字获取一行,一个唯一的街道名称就足够了。所以我决定抑制重复的街道名称('nom_voie')和城镇名称('nom_commune'),聚合如下:

问题是这种利用将很多值从一个字段转移到另一个字段,使我的数据库绝对无法使用。

如您所见,“nom_voie”的值现在在“nom_commune”中,“x”值在“lat”中,“y”值在“lon”中,最后“nom_voie”值现在是“-” ,并且我得到了替换其他字段的新字段(“源”的“field19”)...

我是否使用了错误选项的聚合?

我获得了 4700 万个条目,这会造成一些问题吗?

感谢大家的宝贵时间,即使您只是阅读本文!

编辑 :

经过几次尝试和一些搜索,我发现是聚合函数造成了一些问题,但我仍然不明白为什么,如果有人得到一些提示,我只是编辑了文档,这样它就更容易理解和可读了!(之前我以为是函数中的 $unset 问题)

0 投票
1 回答
122 浏览

mongodb - 如何在 mongodb 的数据字段中更新小时数

我有一组 mongo 文档,我需要转换/更新以下值,例如 ("workedDate" : ISODate("2020-07-01T00:00:00Z"))

我尝试了以下查询:

收到以下错误:

0 投票
1 回答
88 浏览

arrays - MongoDB - 在多个文档中更新数组中的多个子文档

我正在制作一个 node.js 网站。我有一个posts集合,其中帖子的评论存储在一个数组中,评论作者的详细信息作为嵌套对象。

这是新帖子的架构:

这是被推送到其帖子的新评论:

为了避免将评论存储在另一个集合中并进行复杂的多次查找(我正在进行 1 次查找以获取帖子作者详细信息,但无法添加另一个以使其适用于评论)以合并新闻源,我决定保存评论及其作者的详细信息嵌入到帖子中。

现在,当用户个人资料图片更新时,所有评论都必须更新以显示新图片。

我在 server.js 文件中包含了这个 updateMany 查询以及照片更新路由:

这里的问题是这只会更新所有帖子中的第一个匹配评论。

我需要更新所有帖子中的所有匹配评论。

我实际上只是通过以下 youtube 视频来学习,所以请帮助我。