mongodb - 如何向现有文档添加新字段

标签 mongodb

<分区>

在我数据库的 coupes 集合中,示例记录如下所示:

db.coupes.findOne()
{
    "_id" : ObjectId("5949834be916d79e033500c6"),
    "rank" : 10,
    "brand" : "Toyota",
    "model" : "86SE"
}

但是,我想将其更新为如下所示:

 {
"_id" : ObjectId("5949834be916d79e033500c6"),
"rank" : 10,
"brand" : "Toyota",
"model" : "86SE", 
"engineSpec" : {"cylinderConfiguration": "H-4", "transmission" : "6 speed auto"}
 }

我怎样才能做到这一点?

最佳答案

因此,您应该使用“更新”方法并向其传递两个对象:第一个用于查找您要更新的文档,第二个用于更新数据。

如您所见,我正在使用“$set”运算符来防止对象被传递的数据完全替换。 了解有关 update 的更多信息方法和$set官方运营商docs .

db.coupes.update(
        {
            _id: ObjectId("5949834be916d79e033500c6")
        },
        {
            $set : {
                engineSpec : {"cylinderConfiguration": "H-4", "transmission" : "6 speed auto"} }
            }
        }
    )

我在示例中使用 ObjectId 作为唯一的查找参数,因为它正在更新单个 uniq 文档。实际上,您可以按任何字段查找对象,但请记住,如果您有多个具有相同字段/值的对象 - 您需要在查询中添加 multi:true 选项以更新所有合适的文档:

db.coupes.update(
            {
                rank: 10
            },
            {
                $set : {
                    engineSpec : {"cylinderConfiguration": "H-4", "transmission" : "6 speed auto"} }
                }
            },
            {
                multi: true
            }
        )

这样的代码将更新排名等于 10 的所有文档。您还应该注意到我在第三个对象中添加了“多”选项,这是您之前没有看到的。阅读有关更新选项的更多信息 here .

关于mongodb - 如何向现有文档添加新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44685716/

相关文章:

mongodb - Vagrant MongoDB 配置连接被拒绝

javascript - 如何使用 Sails.js 和 Waterline 更新 MongoDB 子文档中的特定键?

python - Pymongo 游标迭代的替代方案

javascript - 传递 null 值时 Heroku 应用程序崩溃

linux - 无法连接到远程 mongodb 服务器

node.js - 副本集的 PrimaryPreferred 首选项不起作用

python - 使用 MongoDB 作为持久哈希表

c# - MongoDB C# 驱动程序 - 对 _id 执行 "IN"查询的最快方法

mongodb - 使 _id 索引在 mongodb 集合中唯一

node.js - 为什么我在 Redis 中需要超过 1 个连接,聊天应用程序需要多少内存?