mongodb更新数据

使用update()更新数据

db.collection.update(critera,objNEW,options)

updates函数接受3个参数:

  1. critera:指定查询,选择将要更新的文档;
  2. objNEW:指定更新信息,也可用操作符完成;
  3. options:指定更新文档时的选项,可选值有upsert和multi.
    upsert:如果数据存在就更新,否则创建数据。
    multi:指定是否更新所有匹配文档,或者只更新第一个匹配的文档(默认行为)。
db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "DVD", "Title" : "Blade Runner", "Released" : 1982 }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }
db.media.update({Title:'Blade Runner'},{Type:'Book',Title:'Wars and Peace'},{upsert:true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
 db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace" }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }

该更新操作替换原先的文档,并保存新的文档

设置字段的值

db.media.update({Title:'Wars and Peace'},{$set:{Released:2015}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace", "Released" : 2015 }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }

删除指定的字段

db.media.update({Title:'Wars and Peace'},{$unset:{Released:2015}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
 db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace" }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }

在指定的字段中添加某个值

通过$push操作符可以在指定字段中添加某个值。
* 如果该字段是个数组,该值将被添加到数组中;
* 如果该字段尚不存在,该字段的值将被设置为数组;
* 如果该字段存在,但不是数组,将会抛出错误。

db.media.update({Title:'Wars and Peace'},{$push:{Author:'Tony Stewie'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace", "Author" : [ "Tony Stewie" ] }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }

指定数组中的多个值

db.media.update({Title:'Wars and Peace'},{$push:{Author:{$each:['John Smith','Andy Fox']}}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
 db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace", "Author" : [ "Tony Stewie", "John Smith", "Andy Fox" ] }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }

删除数组中第一个或最后一个元素

删除数组中最后一个元素

db.media.update({Title:'Wars and Peace'},{$pop:{Author:1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

删除数组中第一个元素

db.media.update({Title:'Wars and Peace'},{$pop:{Author:-1}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

删除所有指定的值

db.media.update({Title:'Wars and Peace'},{$pull:{Author:'Tony Stewie'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

删除数组中的多个值

db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace", "Author" : [ "John Smith", "Tony Stewie" ] }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }
db.media.update({Title:'Wars and Peace'},{$pullAll:{Author:['John Smith','Tony Stewie']}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
db.media.find()
{ "_id" : ObjectId("585f822891c851f743fea7b5"), "Type" : "Book", "Title" : "Wars and Peace", "Author" : [ ] }
{ "_id" : ObjectId("585f824d91c851f743fea7b6"), "Type" : "DVD", "Title" : "Tony Story3", "Released" : 2010 }
{ "_id" : ObjectId("585f828391c851f743fea7b7"), "Type" : "DVD", "Title" : "Matrix", "Released" : 1999 }

猜你喜欢

转载自blog.csdn.net/uevol14/article/details/53871191