问题标签 [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 回答
5364 浏览

node.js - 如何更新猫鼬中的对象

我有一个看起来像这样的架构:

我想在给定 refreshToken 的情况下更新谷歌的访问令牌。我怎样才能做到这一点?

我试过这个,但它似乎不起作用

0 投票
1 回答
224 浏览

mongodb - 向嵌入文档添加附加字段

我在我的 MongoDB 数据库中广泛使用嵌入式文档,并且在尝试添加其他数据时遇到了速度问题:

作为一个例子,我有一个看起来有点像这样的文档:

我想要做的是在嵌入式文档中添加 5 个新字段,如下所示:

我开始在 for 循环中使用 find().update_one() 执行此操作,显式识别每个嵌入文档并使用“$set”显式使用文档。这种方法有效,但速度很慢。如果我的收藏很小,我相信这无关紧要,但因为它很大(数以百万计的文档)。它可能很慢,因为每次我添加一组字段时都必须移动整个文档。考虑到这一点,我尝试一次性将新字段添加到所有嵌入的文档中。我通过将查找查询留空并从“$set”命令中删除位置 $ 来做到这一点。有点像这样(在 pymongo 中):

这种方法似乎会引发错误cannot use the part (basket of basket.new_5) to traverse the element ({basket:......

有没有人能够对我做错了什么提供一些见解?甚至有可能做到这一点吗?

0 投票
1 回答
36 浏览

arrays - 将元素压入数组

我有一个名为 test 的集合,类似于以下 json:

现在我想将另一个({x:99,y:99})元素推入a.a1条件中a.id=1,我尝试了以下命令:

并返回无法使用部分(a.a1 的a)遍历元素的错误消息,那么我应该如何将元素添加到数组中?

0 投票
1 回答
51 浏览

arrays - 更新多级嵌入文档

我在 mongoDB 中有一个相当复杂的数据结构。文件看起来有点像这样

我想将一组文档添加到嵌入式文档的 exGroup 数组中,以便每个嵌入式文档看起来像这样

我尝试使用如下所示的更新查询来做到这一点:

不幸的是,这给了我错误 "fundId": 0, "date": ISODate("2016-11-21T11:00:00.000+0000"), "basket.assetId": 2500, "basket.exGroup.exgId": 0

从根本上说,我的问题是我不知道如何正确处理位于多级数组叶子的文档(即 doc.array.doc.array.doc)

0 投票
5 回答
5633 浏览

mongodb - MongoDB 使用 or 查询更新多个子文档

我想一次对多个子文档进行更新查询。我会将所有子文档状态设置为被动,只要它们满足我在查询时给出的条件。

上面的查询恰好找到了一个子文档,然后根据我的需要进行更新。但;

当我用或填充查询段并添加其他项目时,它会给出错误:

我在这里想念什么?

0 投票
1 回答
1261 浏览

mongodb - 在 mongoDB 文档中更新日期字段时指定日期格式

我正在使用 mongoDB 3.4 并希望通过将EffectiveEndDateTime字段设置为今天/当前日期时间来关闭 mongoDB 集合中的文档,并希望它采用以下格式:yyyy-MM-dd HH:mm:ss.SSS.

如何指定日期格式?

我当前的更新查询是:

谢谢

0 投票
1 回答
1856 浏览

javascript - modifiedCount 和 upsertedCount 都可以为 0 吗?

我一直想知道,与选项一起使用updatemongodb是否{upsert:true}有可能同时获得upsertedCountANDmodifiedCount为 0?

我知道 是upsertedCount指创建的文档,而 是modifiedCount指更新的文档。

因此,使用upsertI 找不到两者都等于 0 的场景。

我错了吗?

在此先感谢您的帮助。

0 投票
1 回答
1278 浏览

mongodb - mongodb是一一查找更新还是全部查找然后全部更新

在mongodb中,更新多个文档的写操作不是原子的。如果有3条记录A,B,C需要更新。

MongoDB是否:

查找 A,更新 A,查找 B,更新 B,查找 C,更新 C

或者

找到A,B,C并保存到内存,forEach,更新A,B,C?

0 投票
1 回答
71 浏览

javascript - 我在 MongoDB 中的复杂文档 update() 的解决问题是什么?

我无法访问我的 MongoDB 集合并更改复杂文档中的值。我尝试了比下面显示的一个示例更多的变体,各种变体,但都失败了。

我想将键“air”的值从“rain”更改为“clear”。在现实生活中,我不会知道“空气”键的当前值是“雨”。

请注意,我没有使用 MongoDB _id 对象,并且想在不使用它的情况下完成此操作。

weatherSys 集合中的 3 个文档:

UPDATE-1:好的,所以我希望我能找到一个比你建议的更简单的布局,但我失败了。我尝试的所有内容都无法在“空中”密钥级别进行寻址。因此,我将您的确切 JSON 复制并粘贴到我的集合中并运行它。我正在使用 MongoChef 来操作和测试集合。

这是我的新布局,它通过 3 次粘贴 JSON 来创建 3 个文档:

在此处输入图像描述

然后,当我尝试更新“旧金山”文档的“空气”键时,我得到了意想不到的结果。它没有更新 "air":"dry",而是在 "San Francisco" 对象中创建了一个新的 "air" 键:

在此处输入图像描述

所以我想好吧,让我们再次尝试更新,看看会发生什么:

在此处输入图像描述

在此处输入图像描述

如您所见,它更新了之前创建的“air”键。我可以解决这个问题并尝试让它以“我的”方式工作,但我只是想让它工作,所以我再次重新配置我的收藏布局,按照“工作”的方式:

在此处输入图像描述

并再次运行更新:

在此处输入图像描述

然后我通过再次运行更新来验证它:

在此处输入图像描述

它有效,我在多文档环境中正确更新。所以这是我当前的工作集合布局:

在此处输入图像描述

在此处输入图像描述

我对此有几个问题-

  1. 我在每个文档中都使用顶级键“天气”。它不会向文档中的信息添加任何内容。是否存在不需要该键及其带来的开销的布局设计更改?

  2. 可以说我必须使用“天气”键。它的值是一个数组,但该数组只有一个元素,即包含键的对象:城市、天空、空气和地面。寻址是否需要使用只有一个元素的数组?或者我可以摆脱它。而不是 "weather":[{}] 设计可以是 "weather":{} 还是我会再次遇到不可寻址问题?

  3. 看来我现在可以 update() 键的任何值:空气、天空和地面,但是 find() 结构是什么来读取其中一个文档中的键“地面”的值?

----> 好的,我想我有这个问题 #3- db.weatherSys.find({ "weather.city" : "San Francisco" }, { "weather.ground": 1 })

  1. 在您建议的原始集合布局中,您能否向我解释为什么它没有像您和我预期的那样更新,而是创建了一个新的“城市”对象?

这里很多。我很感激你坚持下去。

0 投票
1 回答
46 浏览

mongodb - mongodb:对变量的更新查询对另一个数组变量进行更改

通过终端在 aws ec2 实例中托管的现有 mongodb 数据库上运行此操作:

除了将所有用户的变量增加 100 之外,同一集合中的另一个变量(历史)的条目也发生了变化。

不需要的更改包括历史中的原因变量已从“已接收”更改为“已发送”,以供各种用户使用。

由于我的查询没有解决“历史”问题,是否有关于造成这种情况的想法?