MongoDB - 更新 collection 中的所有文档,使用文档中已存在的另一个字段的值添加新字段

MongoDB - Update all documents in a collection, adding a new field using value from another field that is already present in the document

我有一个 MongoDB collection 由这样的文件组成:

{
 title: "Foo",
 subtitle: "Bar"
}

由于开发需要,我想批量上传所有文档,为每个文档添加一个title_lower键,即现有文档标题保存为lower-case字符串:

{
 title: "Foo",
 subtitle: "Bar",
 title_lower: "foo"
}

我正在使用 Node.js 服务器和 Mongoose 与数据库通信,但我想避免在服务器上编写 one-time 方法来执行此操作。

我已经下载了 MongoCompass,希望 MongoSH (shell) 可以帮助我实现这一目标,但我在重用现有文档值以 $set 一个新的 title_lower 时遇到了问题。

这可能吗?

您可以运行在mongodb罗盘中查询shell(_MONGOSH)

db.<CollectionName>.updateMany({ }, [{$set: {"title_lower": { $toLower: "$title" }}}], {upsert: false})

我试过了,它在我这边运行良好,但我建议在更新你的真实 collection.

之前先测试一下 collection