问题标签 [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.
node.js - 如何更新猫鼬中的对象
我有一个看起来像这样的架构:
我想在给定 refreshToken 的情况下更新谷歌的访问令牌。我怎样才能做到这一点?
我试过这个,但它似乎不起作用
mongodb - 向嵌入文档添加附加字段
我在我的 MongoDB 数据库中广泛使用嵌入式文档,并且在尝试添加其他数据时遇到了速度问题:
作为一个例子,我有一个看起来有点像这样的文档:
我想要做的是在嵌入式文档中添加 5 个新字段,如下所示:
我开始在 for 循环中使用 find().update_one() 执行此操作,显式识别每个嵌入文档并使用“$set”显式使用文档。这种方法有效,但速度很慢。如果我的收藏很小,我相信这无关紧要,但因为它很大(数以百万计的文档)。它可能很慢,因为每次我添加一组字段时都必须移动整个文档。考虑到这一点,我尝试一次性将新字段添加到所有嵌入的文档中。我通过将查找查询留空并从“$set”命令中删除位置 $ 来做到这一点。有点像这样(在 pymongo 中):
这种方法似乎会引发错误cannot use the part (basket of basket.new_5) to traverse the element ({basket:......
有没有人能够对我做错了什么提供一些见解?甚至有可能做到这一点吗?
arrays - 将元素压入数组
我有一个名为 test 的集合,类似于以下 json:
现在我想将另一个({x:99,y:99})
元素推入a.a1
条件中a.id=1
,我尝试了以下命令:
并返回无法使用部分(a.a1 的a)遍历元素的错误消息,那么我应该如何将元素添加到数组中?
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)
mongodb - MongoDB 使用 or 查询更新多个子文档
我想一次对多个子文档进行更新查询。我会将所有子文档状态设置为被动,只要它们满足我在查询时给出的条件。
上面的查询恰好找到了一个子文档,然后根据我的需要进行更新。但;
当我用或填充查询段并添加其他项目时,它会给出错误:
我在这里想念什么?
mongodb - 在 mongoDB 文档中更新日期字段时指定日期格式
我正在使用 mongoDB 3.4 并希望通过将EffectiveEndDateTime
字段设置为今天/当前日期时间来关闭 mongoDB 集合中的文档,并希望它采用以下格式:yyyy-MM-dd HH:mm:ss.SSS
.
如何指定日期格式?
我当前的更新查询是:
谢谢
javascript - modifiedCount 和 upsertedCount 都可以为 0 吗?
我一直想知道,与选项一起使用update
,mongodb
是否{upsert:true}
有可能同时获得upsertedCount
ANDmodifiedCount
为 0?
我知道 是upsertedCount
指创建的文档,而 是modifiedCount
指更新的文档。
因此,使用upsert
I 找不到两者都等于 0 的场景。
我错了吗?
在此先感谢您的帮助。
mongodb - mongodb是一一查找更新还是全部查找然后全部更新
在mongodb中,更新多个文档的写操作不是原子的。如果有3条记录A,B,C需要更新。
MongoDB是否:
查找 A,更新 A,查找 B,更新 B,查找 C,更新 C
或者
找到A,B,C并保存到内存,forEach,更新A,B,C?
javascript - 我在 MongoDB 中的复杂文档 update() 的解决问题是什么?
我无法访问我的 MongoDB 集合并更改复杂文档中的值。我尝试了比下面显示的一个示例更多的变体,各种变体,但都失败了。
我想将键“air”的值从“rain”更改为“clear”。在现实生活中,我不会知道“空气”键的当前值是“雨”。
请注意,我没有使用 MongoDB _id 对象,并且想在不使用它的情况下完成此操作。
weatherSys 集合中的 3 个文档:
UPDATE-1:好的,所以我希望我能找到一个比你建议的更简单的布局,但我失败了。我尝试的所有内容都无法在“空中”密钥级别进行寻址。因此,我将您的确切 JSON 复制并粘贴到我的集合中并运行它。我正在使用 MongoChef 来操作和测试集合。
这是我的新布局,它通过 3 次粘贴 JSON 来创建 3 个文档:
然后,当我尝试更新“旧金山”文档的“空气”键时,我得到了意想不到的结果。它没有更新 "air":"dry",而是在 "San Francisco" 对象中创建了一个新的 "air" 键:
所以我想好吧,让我们再次尝试更新,看看会发生什么:
如您所见,它更新了之前创建的“air”键。我可以解决这个问题并尝试让它以“我的”方式工作,但我只是想让它工作,所以我再次重新配置我的收藏布局,按照“工作”的方式:
并再次运行更新:
然后我通过再次运行更新来验证它:
它有效,我在多文档环境中正确更新。所以这是我当前的工作集合布局:
我对此有几个问题-
我在每个文档中都使用顶级键“天气”。它不会向文档中的信息添加任何内容。是否存在不需要该键及其带来的开销的布局设计更改?
可以说我必须使用“天气”键。它的值是一个数组,但该数组只有一个元素,即包含键的对象:城市、天空、空气和地面。寻址是否需要使用只有一个元素的数组?或者我可以摆脱它。而不是 "weather":[{}] 设计可以是 "weather":{} 还是我会再次遇到不可寻址问题?
看来我现在可以 update() 键的任何值:空气、天空和地面,但是 find() 结构是什么来读取其中一个文档中的键“地面”的值?
----> 好的,我想我有这个问题 #3- db.weatherSys.find({ "weather.city" : "San Francisco" }, { "weather.ground": 1 })
- 在您建议的原始集合布局中,您能否向我解释为什么它没有像您和我预期的那样更新,而是创建了一个新的“城市”对象?
这里很多。我很感激你坚持下去。
mongodb - mongodb:对变量的更新查询对另一个数组变量进行更改
通过终端在 aws ec2 实例中托管的现有 mongodb 数据库上运行此操作:
除了将所有用户的变量增加 100 之外,同一集合中的另一个变量(历史)的条目也发生了变化。
不需要的更改包括历史中的原因变量已从“已接收”更改为“已发送”,以供各种用户使用。
由于我的查询没有解决“历史”问题,是否有关于造成这种情况的想法?