问题标签 [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.
mongodb - Mongodb findAndModify vs redis incr
我想知道 Mongodb findAndmodify vs redis increment 命令在速度方面有多好。我知道 Mongodb findAndModify 会对文档进行 ar/w 锁定,但是如果我有 100 个线程试图同时写入,我想知道 redis 是否是更可取的选择。
mongodb - 更新/插入子文档 mongodb
我显然不明白如何在现有文档中更新/插入子文档。我尝试了以下方法:
这只能工作一次,但如果执行此代码,我想不断更改 subDoc 的数据 1,2 和 3。find_and_modify 也失败了,因为它似乎覆盖了整个文档,删除了除 id 和更新中指定的所有其他字段之外的所有其他字段。由于我对 MongoDB 很陌生,如果有人能给我一个代码示例来解决我的问题,那就太好了。
编辑:没有“$set”语句,它在第二次执行时也保持不变..
Edit2:这似乎有效,尽管我无法再直接在 MonjaDB 中编辑受影响的(JSON)文档:D
我不知道,为什么这是有效的,所以也许有人可以解释我做错了什么..
提前致谢,
码海
mongodb - 如何用 mongo 区分创建的新对象和找到的对象
根据mongo docs,我的返回对象应该包含一个 lastErrorObject,它应该通过 updatexisting 指示对象是新的还是旧的。我没有看到这个对象。如何修复我的查询以区分创建的新对象和找到的对象?
我做错了什么?
xml - SED(或其他查找和替换);更改嵌入标签
我在 .xml 文件中有很多遵循这种格式的实例:
我正在尝试删除 A 标签,并重命名 A 标签中的 B 标签;所以最终结果将是:(请注意,将 B 标签重命名为任何标签也可以,它们不再是 B)
我一直在搞乱sed,但我不知道该怎么做。每个 A 中没有固定数量的 B 标签(有些没有,有些可能有 20 个,等等)。另一个问题是我不想删除其他地方存在的 B 标签。所以我不能对 B 标签进行简单的查找和替换,因为这会改变嵌入在 .
任何帮助表示赞赏,谢谢!
mongodb - 另一个 MongoDB findAndModify
请考虑以下文档,它是运行时集合的一部分:
我的目标是更新具有键“20”的“功能”数组元素的值。这是我尝试过的东西(在 mongo shell 中):
在所有情况下,shell 都会打印 null 并且数据没有任何反应。所以,主要问题当然是我的代码片段有什么问题。另外,应该如何解释“null”?有没有像 mongo shell's log 这样的东西可以找到任何线索?非常感谢您的帮助!
javascript - findAndModify - MongoError:异常:必须指定删除或更新
我想更新一个数组并返回文档。我的 findAndModify 语法是否正确?
我使用这个没有问题:
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.ExpressionVisitor
1.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder。 MongoDB.Driver.Linq.ExpressionVisitor1.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.Visit(Expression node) at MongoDB.Driver.Linq.Utils.BsonSerializationInfoFinder.GetSerializationInfo(Expression node, Dictionary
2 serializationInfoCache 的 Lambda(LambdaExpression 节点)) MongoDB.Driver.Builders.UpdateBuilder1.Inc(Expression
1 memberExpression,Int32 值)
如何更新子文档的字典值?
java - MongoDB - 使用 findAndModify 设置 $set 或更新嵌入式文档
我想使用 findAndModify 来更新嵌入文档的字段。例如,如果我要插入此文档。
然后在稍后的某个时间,插入以下文档:
期望的最终结果是:
我尝试使用下面的代码在 Java 中实现这一点,但无济于事。是否有任何内置功能可以实现上述预期结果?
- 编辑 -
Neil Lunn 在下面发布了正确答案。对于任何好奇这在 Java 中意味着什么的人,您只需为上面的代码更改一行即可获得所需的结果:
mongodb - 在 MongoDB FindAndModify 中使用现有文档数据和新信息
创建订单时,文档具有以下架构:
订单完成后,将db.collection.findAndModify()
处理一个操作以设置 endTime,从而生成如下文档:
在同一个过程中,我需要设置 order duration
,通过减去两个时间来计算:doc.endTime-doc.startTime
。
是否有操作员或程序可以帮助在一次操作中做到这一点?还是我必须执行两个 FindAndModify 操作,一个设置返回新文档的新数据,另一个设置duration
字段?