问题标签 [findandmodify]

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 回答
636 浏览

mongodb - Mongodb findAndModify vs redis incr

我想知道 Mongodb findAndmodify vs redis increment 命令在速度方面有多好。我知道 Mongodb findAndModify 会对文档进行 ar/w 锁定,但是如果我有 100 个线程试图同时写入,我想知道 redis 是否是更可取的选择。

0 投票
1 回答
1933 浏览

mongodb - 更新/插入子文档 mongodb

我显然不明白如何在现有文档中更新/插入子文档。我尝试了以下方法:

这只能工作一次,但如果执行此代码,我想不断更改 subDoc 的数据 1,2 和 3。find_and_modify 也失败了,因为它似乎覆盖了整个文档,删除了除 id 和更新中指定的所有其他字段之外的所有其他字段。由于我对 MongoDB 很陌生,如果有人能给我一个代码示例来解决我的问题,那就太好了。

编辑:没有“$set”语句,它在第二次执行时也保持不变..

Edit2:这似乎有效,尽管我无法再直接在 MonjaDB 中编辑受影响的(JSON)文档:D

我不知道,为什么这是有效的,所以也许有人可以解释我做错了什么..

提前致谢,

码海

0 投票
1 回答
82 浏览

mongodb - 如何用 mongo 区分创建的新对象和找到的对象

根据mongo docs,我的返回对象应该包含一个 lastErrorObject,它应该通过 updatexisting 指示对象是新的还是旧的。我没有看到这个对象。如何修复我的查询以区分创建的新对象和找到的对象?

我做错了什么?

0 投票
2 回答
89 浏览

xml - SED(或其他查找和替换);更改嵌入标签

我在 .xml 文件中有很多遵循这种格式的实例:

我正在尝试删除 A 标签,并重命名 A 标签中的 B 标签;所以最终结果将是:(请注意,将 B 标签重命名为任何标签也可以,它们不再是 B)

我一直在搞乱sed,但我不知道该怎么做。每个 A 中没有固定数量的 B 标签(有些没有,有些可能有 20 个,等等)。另一个问题是我不想删除其他地方存在的 B 标签。所以我不能对 B 标签进行简单的查找和替换,因为这会改变嵌入在 .

任何帮助表示赞赏,谢谢!

0 投票
1 回答
197 浏览

mongodb - 另一个 MongoDB findAndModify

请考虑以下文档,它是运行时集合的一部分:

我的目标是更新具有键“20”的“功能”数组元素的值。这是我尝试过的东西(在 mongo shell 中):

在所有情况下,shell 都会打印 null 并且数据没有任何反应。所以,主要问题当然是我的代码片段有什么问题。另外,应该如何解释“null”?有没有像 mongo shell's log 这样的东西可以找到任何线索?非常感谢您的帮助!

0 投票
1 回答
421 浏览

mongodb - findAndModify 对嵌入文档的原子性

在 mongodb 手册中,有一个针对单个文档的原子操作的示例。

手册指出以下操作是原子的:

我的问题是如果可用字段是嵌入式文档会发生什么。比如下图:

我还能原子地做这个操作吗?如果是这样,怎么做?

0 投票
1 回答
8837 浏览

javascript - findAndModify - MongoError:异常:必须指定删除或更新

我想更新一个数组并返回文档。我的 findAndModify 语法是否正确?

我使用这个没有问题:

0 投票
1 回答
1263 浏览

c# - 在 MongoDB C# 驱动程序中增加字典值

我有以下对象:

ActionStats 对象如下所示:

我希望能够像这样使用 FindAndModify 更新值:

但是,这在具有以下堆栈跟踪的第二个增量语句上失败:

堆栈跟踪——在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) 在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 在 MongoDB.Driver.Linq.Utils .BsonSerializationInfoFinder.VisitGetItem(MethodCallExpression node) at MongoDB.Driver.Linq.ExpressionVisitor 1.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.VisitMember(MemberExpression node) at MongoDB.Driver.Linq.ExpressionVisitor1.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder。 MongoDB.Driver.Linq.ExpressionVisitor 1.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.GetSerializationInfo(Expression node, Dictionary2 serializationInfoCache 的 Lambda(LambdaExpression 节点)) MongoDB.Driver.Builders.UpdateBuilder 1.Inc(Expression1 memberExpression,Int32 值)

如何更新子文档的字典值?

0 投票
1 回答
2712 浏览

java - MongoDB - 使用 findAndModify 设置 $set 或更新嵌入式文档

我想使用 findAndModify 来更新嵌入文档的字段。例如,如果我要插入此文档。

然后在稍后的某个时间,插入以下文档:

期望的最终结果是:

我尝试使用下面的代码在 Java 中实现这一点,但无济于事。是否有任何内置功能可以实现上述预期结果?

- 编辑 -

Neil Lunn 在下面发布了正确答案。对于任何好奇这在 Java 中意味着什么的人,您只需为上面的代码更改一行即可获得所需的结果:

0 投票
3 回答
377 浏览

mongodb - 在 MongoDB FindAndModify 中使用现有文档数据和新信息

创建订单时,文档具有以下架构:

订单完成后,将db.collection.findAndModify()处理一个操作以设置 endTime,从而生成如下文档:

在同一个过程中,我需要设置 order duration,通过减去两个时间来计算:doc.endTime-doc.startTime

是否有操作员或程序可以帮助在一次操作中做到这一点?还是我必须执行两个 FindAndModify 操作,一个设置返回新文档的新数据,另一个设置duration字段?