MongoDB笔记(四) —— 创建、更新、删除文档

插入文档:

insert() 或 save()

> db.demo.save({name:"myName",age:18,hobby:["music","movie"]})
WriteResult({ "nInserted" : 1 })
> 

查询:

find()

> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName", "age" : 18, "hobby" : [ "music", "movie" ] }
> 

定义为变量后插入

> info2=({name:"yourName",age:20,hobby:["drawing","run"]})
{ "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> db.demo.insert(info2)
WriteResult({ "nInserted" : 1 })
> 

更新:

update()
语法格式

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
  • 参数说明:
    • query : update的查询条件,类似sql update查询内where后面的。
    • update : update的对象和一些更新的操作符(如 , , inc…)等,也可以理解为sql update查询内set后面的
    • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    • writeConcern :可选,抛出异常的级别。
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName", "age" : 18, "hobby" : [ "music", "movie" ] }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 
> db.demo.update({'name':"myName"},{$set:{'name':"myName1"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> 
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName1", "age" : 18, "hobby" : [ "music", "movie" ] }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 

修改多条相同文档:
multi:true

> db.demo.update({'name':"myName"},{$set:{'name':"myName1"}},{multi:true})

通过传入文档替换已有文档
save()
语法格式

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)
  • 参数说明:
    • document : 文档数据。
    • writeConcern :可选,抛出异常的级别。
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName1", "age" : 18, "hobby" : [ "music", "movie" ] }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 
> db.demo.save({ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ] })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> 
> db.demo.find().pretty()
{
	"_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"),
	"name" : "myName2",
	"age" : 20,
	"hobby" : [
		"music",
		"movie"
	]
}
{
	"_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"),
	"name" : "yourName",
	"age" : 20,
	"hobby" : [
		"drawing",
		"run"
	]
}
> 

更多实例:

相同条件只更新第一条记录:
db.demo.update( { “key” : “val” } , { $set : { “key1” : “val1”} } );
db.demo.update( { “key” : “val” } , { $set : { “key1” : “val1”} } ,false,false);

相同条件全部更新:
db.demo.update( { “key” : “val” } , { $set : { “key1” : “val1”} },false,true);

不存在新建:

> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ] }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 
> db.demo.update({"name":"hisName"},{$set:{"name":"hisName1"}},true,false)
WriteResult({
	"nMatched" : 0,
	"nUpserted" : 1,
	"nModified" : 0,
	"_id" : ObjectId("5e796a0b7b047d1d86dd360d")
})
> 
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ] }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e796a0b7b047d1d86dd360d"), "name" : "hisName1" }
> 

条件更新(age>10):

> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ] }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e796a0b7b047d1d86dd360d"), "name" : "hisName1", "age" : "30" }
>
>  db.demo.update({"age":{$gt:10}},{$set:{"job":"IT"}},true,true)
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> 
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ], "job" : "IT" }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ], "job" : "IT" }
{ "_id" : ObjectId("5e796a0b7b047d1d86dd360d"), "name" : "hisName1", "age" : "30" }
> 

删除

语法格式

db.collection.remove(
   <query>,
   <justOne>
)

2.6+
db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
  • 参数说明:

    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    • writeConcern :(可选)抛出异常的级别。
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ], "job" : "IT" }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ], "job" : "IT" }
{ "_id" : ObjectId("5e796a0b7b047d1d86dd360d"), "name" : "hisName1", "age" : "30" }
>
>  db.demo.remove({"name":"hisName1"})
WriteResult({ "nRemoved" : 1 })
> 
> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ], "job" : "IT" }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ], "job" : "IT" }
> 

相同条件删除第一条记录(经测试不管数字是几都删除第一条,待求证。。。):

> db.demo.find()
{ "_id" : ObjectId("5e788c89a3edd4aa4ff0c2bd"), "name" : "myName2", "age" : 20, "hobby" : [ "music", "movie" ], "job" : "IT" }
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "hisName", "age" : 20, "hobby" : [ "drawing", "run" ], "job" : "IT" }
{ "_id" : ObjectId("5e796e5aa3edd4aa4ff0c2bf"), "name" : "herName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e796f30a3edd4aa4ff0c2c0"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 
> db.demo.remove({"age":{$gt:10}},3)
WriteResult({ "nRemoved" : 1 })
> 
> db.demo.find()
{ "_id" : ObjectId("5e788dbba3edd4aa4ff0c2be"), "name" : "hisName", "age" : 20, "hobby" : [ "drawing", "run" ], "job" : "IT" }
{ "_id" : ObjectId("5e796e5aa3edd4aa4ff0c2bf"), "name" : "herName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e796f30a3edd4aa4ff0c2c0"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 
> db.demo.remove({"age":{$gt:10}},2)
WriteResult({ "nRemoved" : 1 })
> 
> db.demo.find()
{ "_id" : ObjectId("5e796e5aa3edd4aa4ff0c2bf"), "name" : "herName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e796f30a3edd4aa4ff0c2c0"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 

官方升级删除方法:
删除单条:deleteOne({“key”:“val”}),
删除多条:deleteMany({“key”,“val”}),
删除所有:deeteMany({});

> db.demo.deleteOne({"age":{$gt:10}})
{ "acknowledged" : true, "deletedCount" : 1 }
> 
> db.demo.find()
{ "_id" : ObjectId("5e796f30a3edd4aa4ff0c2c0"), "name" : "myName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e7972c7a3edd4aa4ff0c2c1"), "name" : "hisName", "age" : 20, "hobby" : [ "drawing", "run" ] }
{ "_id" : ObjectId("5e7972c9a3edd4aa4ff0c2c2"), "name" : "yourName", "age" : 20, "hobby" : [ "drawing", "run" ] }
> 
> db.demo.deleteMany({})
{ "acknowledged" : true, "deletedCount" : 3 }
> 
> db.demo.find()
> 

发布了90 篇原创文章 · 获赞 12 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/u012382791/article/details/105425488