gpt4 book ai didi

mongodb - 将字符串附加到 MongoDB 中现有字段的末尾

转载 作者:IT老高 更新时间:2023-10-28 13:10:14 24 4
gpt4 key购买 nike

我有一个包含很长字符串的字段的文档。我需要将另一个字符串连接到字段中已包含的字符串的末尾。

我现在的做法是,从 Java 中获取文档,提取字段中的字符串,将字符串附加到末尾,最后使用新字符串更新文档。

问题:字段中包含的字符串很长,这意味着在Java中检索和使用该字符串需要时间和资源。此外,这是每秒执行多次的操作。

我的问题:有没有办法将字符串连接到现有字段,而不必先获取(db.<doc>.find())字段的内容?实际上我想要的只是(field.contents += new_string)。

我已经使用 Javascript 和 eval 完成了这项工作,但我发现,MongoDB在执行javascript时会锁定数据库,这使得整个应用程序更慢。

最佳答案

开始Mongo 4.2db.collection.updateMany()可以接受聚合管道,最终允许根据当前值更新字段:

// { a: "Hello" }
db.collection.updateMany(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
)
// { a: "HelloWorld" }
  • 第一部分 {} 是匹配查询,过滤要更新的文档(在本例中为所有文档)。

  • 第二部分 [{ $set: { a: { $concat: [ "$a", "World"] } } }] 是更新聚合管道(注意方括号表示使用聚合管道)。 $set ($addFields 的别名)是一个新的聚合运算符,在这种情况下替换字段的值(通过将 a 本身与后缀 "World")。注意a是如何直接根据自己的值($a)修改的。

关于mongodb - 将字符串附加到 MongoDB 中现有字段的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23868963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com