更新,创建,删除mongodb文档(原创)
1,1.插入并保存文档:
db.person.insert("bar":"baz");
2.1删除文档:
db.user.remove();--这条语句会删除所有的文档 ,但是不包括集合,原有的索引也会保留。
2.2直接删除集合:
db.drop_collection("user");--这个不但会删除集合,连索引也会一并删除。
3.1文档替换:
3.2使用修改器:
$inc修改器:db.analytics.update({"url":"www.example.com"},{"inc":{"page":1}})
$set修改器:用来指定一个键的值,如果不存在就创建。
db.user.update({"user":"tang"},{"$set":{"favourite book":"war and peace"}})--$set还可以修改键的数据类型。
db.user.update({"user":"tangke",{"favourite book":["war and peace","because of you"]}})--修改键的数据类型实例。
$unset删除一个键。
数据修改器:
$push:向已有的数据末尾加入数据。
$addToSet:避免重复添加数据。并且将$addToSet和$each可以添加多个值。
$pop:{$pop:{key:1}}从数组末尾删除一个数据。
> db.user.insert({"name":"tangke","comment":["god ","better","best"],"age":24})。--插入数据。
{ "_id" : ObjectId("4f542cc1eccef5450cf5f3c5"), "age" : 24, "comment" : [ "god "
, "better" ], "name" : "tangke" }--使用$pop后的情况。
$upsert:如果没有文档符合条件,就新创建一条数据。
{ "_id" : ObjectId("4f542cc1eccef5450cf5f3c5"), "age" : 24, "comment" : [ "god "
, "better" ], "name" : "tangke" } --现在没有name=liyi的数据,现在使用upsert来更新。
> db.user.update({"name":"liyi"},{"name":"liyi"},true)
> db.user.find()
{ "_id" : ObjectId("4f542cc1eccef5450cf5f3c5"), "age" : 24, "comment" : [ "god "
, "better" ], "name" : "tangke" }
{ "_id" : ObjectId("4f542e8070322560d367bbd2"), "name" : "liyi" }--现在存在这个文档了,第三个参数为true,表示使用upsert功能。
3.3一次更新多个文档:(更新只能对一个符合要求的文档进行更新,如果要更新多个文档的话, 请看下面)
> db.user.find({"name":"tangke"})
{ "_id" : ObjectId("4f542cc1eccef5450cf5f3c5"), "age" : 24, "comment" : [ "god "
, "better" ], "name" : "tangke" }
{ "_id" : ObjectId("4f542f2beccef5450cf5f3c6"), "name" : "tangke", "age" : 25 } --现在集合中有两条name=tangke的文档。现在来使用多个更新。
> db.user.update({"name":"tangke"},{"$inc":{"age":1}},false,true)
> db.user.find({"name":"tangke"})
{ "_id" : ObjectId("4f542cc1eccef5450cf5f3c5"), "age" : 25, "comment" : [ "god "
, "better" ], "name" : "tangke" }
{ "_id" : ObjectId("4f542f2beccef5450cf5f3c6"), "name" : "tangke", "age" : 26 } --现在集合中的name=tangke的文档都被更新了,update语句的第四个参数表示进行多个文档更新。
3.4返回更新的文档:findAndModify.