gpt4 book ai didi

mongodb - 重命名/更新所有文档中的特定标签

转载 作者:可可西里 更新时间:2023-11-01 09:24:14 27 4
gpt4 key购买 nike

我在一个集合中有这些文档:

[{
"_id" : ObjectId("57496afadc964de30a8084a1"),
"name" : "MongoDB: The Definitive Guide",
"tags" : [ "IT", "SQL" ]
},{
"_id" : ObjectId("57496afadc964de30a8084a2"),
"name" : "MongoDB Applied Design Patterns",
"tags" : [ "SQL", "MongoDB" ]
}]

我需要将所有文档中的所有“SQL”标签重命名为“NoSQL”。我可以先添加新的标签名,然后删除需要更新的标签名:

  db.getCollection('Book').update(
{ tags: 'SQL' },
{ '$push': { tags: 'NoSQL' } },
{ multi: true })

db.getCollection('Book').update(
{ tags: 'SQL' },
{ '$pull': { tags: 'SQL' } },
{ multi: true })

但这需要两个单独的查询。

我怎样才能用一条语句实现这一点?

最佳答案

您使用了错误的运算符。您需要使用 $set运算符和 $位置更新运算符。你也应该使用 updateMany()因为 update() 在官方语言驱动程序中已弃用。

db.getCollection('Book').updateMany(
{ 'tags': 'SQL' },
{ '$set': { 'tags.$': 'NoSQL' } }
)

关于mongodb - 重命名/更新所有文档中的特定标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498255/

27 4 0