更新MongoDB集合中的现有特定文档而不删除

时间:2017-11-18 11:24:55

标签: php mongodb

我是mongoDB的新手,所以我需要一些帮助。
我有一个备份集合。它包含包含以下数据的文档:

{
    "_id" : ObjectId("59f18942e7798954dc373b67"),
    "category" : "building",
},
{
    "_id" : ObjectId("59f18942e7798954dc373b68"),
    "category" : "building",
},
{
    "_id" : ObjectId("59f18942e7798954dc373b69"),
    "category" : "tree",
    "type" : 18,
},
{
    "_id" : ObjectId("59f18942e7798954dc373b70"),
    "category" : "book",
    "type" : 18,
}

然后,例如,一些对象被改变了,变成了这样:

{
    "_id" : ObjectId("59f18942e7798954dc373b67"),
    "category" : "building",
    "size" : 100
},
{
    "_id" : ObjectId("59f18942e7798954dc373b68"),
    "category" : "building",
    "size" : 400
},
{
    "_id" : ObjectId("59f18942e7798954dc373b70"),
    "category" : "book",
    "type" : 18,
    "title" : "New"
}

所以我需要在我的数据库中更新它们。根据我的理解,只需更换。我已经阅读了关于使用'upsert'和'multi'的文档。但是我无法实现它 怎么做?

1 个答案:

答案 0 :(得分:0)

在mongo中更新文档的基本语法是

db.collection.update(query,update,options);

对于你的问题,

1。  db.collection.update({_id: ObjectId("59f18942e7798954dc373b67")},{$set:{size:100}});

2。  db.collection.update({_id: ObjectId("59f18942e7798954dc373b68")},{$set:{size:400}});

3。db.collection.update({_id: ObjectId("59f18942e7798954dc373b70")},{$set:{title:"New"}});

编辑:

您可以试试这个,如果您想在一个命令中执行写操作:

> db.characters.bulkWrite(
>       [
>          { updateOne :
>             {
>                "filter" : { _id : ObjectId("59f18942e7798954dc373b67") },
>                "update" : { $set : { size : 100 } }
>             }
>          },
>          { updateOne :
>             {
>                "filter" : { _id : ObjectId("59f18942e7798954dc373b68") },
>                "update" : { $set : { size : 400 } }
>             }
>          },
>          { updateOne :
>             {
>                "filter" : { _id : ObjectId("59f18942e7798954dc373b68") },
>                "update" : { $set: { title: "New"} } 
>             }
>          },
>       ]    
>);