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
我有一个 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