update

English [??p?de?t] US [?p?det]

vt. ????, ???, ??

n ????? ??;

MongoDB ????() ??? ???

??: ???? ??? ?????? update() ???

??: ??db.collection.update(<query>,<update>, {upsert: <boolean>,multi: <boolean> ;,writeConcern: <document>})

????: query: ???? ?? ??, SQL ???? ?? ?? ?? ??? ?????. ????: ???? ?? ? ?? ???? ???(?: $, $inc...) ?? SQL ???? ??: ?? ??? ??? ? upsert? ??? ?? ????. ? ?? ??? ???? ???? ?? ?? ??? ?????. objNew? ????? true? ??? ???? ???? false?? ??? ????. multi: ????, mongodb? ???? false??, ??? ? ?? ???? ???????. ? ????? true? ?? ??? ?? ??? ?? ???? ?? ???????. writeConcern: ?? ???? ??? ???? ?????.

MongoDB ????() ??? ?

我們在集合 col 中插入如下數(shù)據(jù):

>db.col.insert({
    title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 數(shù)據(jù)庫',
    by: 'php中文網(wǎng)',
    url: 'http://m.miracleart.cn',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})
接著我們通過 update() 方法來更新標(biāo)題(title):

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   # 輸出信息
> db.col.find().pretty()
{
        "_id" : ObjectId("56064f89ade2f21f36b03136"),
        "title" : "MongoDB",
        "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
        "by" : "php中文網(wǎng)",
        "url" : "http://m.miracleart.cn",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}
>
可以看到標(biāo)題(title)由原來的 "MongoDB 教程" 更新為了 "MongoDB"。

以上語句只會修改第一條發(fā)現(xiàn)的文檔,如果你要修改多條相同的文檔,則需要設(shè)置 multi 參數(shù)為 true。

>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})