如何在不覆盖现有文档的情况下更新文档?

时间:2018-03-18 01:27:55

标签: mongodb

我正在研究如何使用mongoDB。

我想更新文档的某个字段,但它会覆盖整个文档。如何仅更新要修改的文档中的字段?

db.products.find({_id: 1})

{
    "_id" : 1.0,
    "name" : "aaa",
    "category" : "toy",
    "price" : 100.0
}

例如,我有一个这样的文档。

db.products.update({_id: 1}, {price:999})

db.products.find({_id: 1})

{
    "_id" : 1.0,
    "price" : 999.0
}

当我像这样更新时,我得到了这个结果。执行update命令后,我丢失了名称字段和类别字段。

2 个答案:

答案 0 :(得分:1)

使用运算符$set

$ db.products.update({_id: 1}, {$set: {price:999}})

此运算符允许您更新指定的字段。

答案 1 :(得分:0)

使用$set运算符,您应该只能更新要修改的列,否则它将覆盖整个文档。

您可以详细了解$set运营商here

的使用情况

最后,您的更新查询应该是这样的:

db.products.update({_id: 1}, {$set: {price:999}})