CRUD就是MongoDB的“增删改查”操作,是对数据库的四种常用操作:创建(create),读取(read),更新(update),删除(delete)。
Create Operations
创建或插入操作将新文档添加到集合中。如果集合当前不存在,则插入操作将创建该集合。
创建操作有三种方法:
db.collection.insertOne():将单个文档插入到一个集合中。
示例:
db.student.insertOne({name:"张三",age:18,sex:"女",hobby:"游泳"})
db.collection.insertMany():将多个文档插入到一个集合中。
db.student.insertMany([{name:"李四",age:24,sex:"男",hobby:"编程"}, {name:"王五",age:17,sex:"女",hobby:"看剧"}, {name:"赵六",age:20,sex:"男",hobby:"游泳"} ])
db.collection.insert():将单个文档或多个文档插入到集合中。这个方法是insertOne()和insertMany()两种方法的综合。
Read Documents
读取操作从数据库中查询文档。
基本格式:
db.collection.find({})
{}中传入要查询的条件,如果{}中什么都不加,默认查询集合中所有文档。
如果要查询性别为“男”的所有同学,则使用以下命令:
db.student.find({sex:"男"})
查询同时符合多个条件的,使用如下格式既可:
db.collection.find({条件一,条件二,条件三…})
假如要查询喜欢游泳的女生,条件一是喜欢游泳,条件二是女生,使用以下命令:
db.student.find({hobby:"游泳",sex:"女"})
但是如果查询满足条件一或者是条件二(满足任意一个条件)的时候,就要使用逻辑查询操作符$or了:
假如要查询年龄大于20或者是喜欢游泳的同学,使用以下命令:
db.student.find({$or:[{age:{$gt:20}},{hobby:"游泳"}]})
这里又使用了一个比较查询操作符$gt,意思是大于,关于操作符,可以查询MongoDB手册:http://www.mongodb.org.cn/manual/
如果只查询一个条件,但是这个条件既可以满足值一,又可以满足值二。
比如要查询兴趣既可以是游泳又可以是看剧的同学,那么要使用以下命令:
db.student.find({hobby:{$in:["游泳","看剧"]}})
没错,这样的查询要用$in操作符,而不是$or操作符。
Update Documents
虽然更新操作有db.collection.updateOne()以及db.collection.updateMany();但是建议使用db.collection.
update
()即可;
标准格式:
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean> } )
query是更新的选择标准,指定要更新哪一部分的内容。与find()中的查询条件一样。
update是要更新的内容。
下面的对象里是可选项,
upsert:可选的。如果设置为true,则在没有文档匹配查询条件时创建一个新文档。默认值为false,当未找到匹配项时不插入新文档。
multi:可选的。如果设置为true,则更新符合查询条件的多个文档。如果设置为false,则更新一个文档。默认值是false。
假如把所有hobby是“游泳”的同学的年龄改为28(虽然这是不合常理的),要使用以下命令:
db.student.update({hobby:"游泳"},{$set:{age:28}},{multi:true})
查询条件是hobby为游泳的同学,查到后,使用字段更新操作符$set将这些同学的age改为28,如果不传multi的话,默认值为false,只更改查询到的第一个同学,传入true更改所有同学。
Delete Documents
若删除集合中所有文档,只需传入以下命令即可:
db.inventory.deleteMany({})
删除多个文档或者删除一个文档分别用以下方法:
db.collection.deleteMany()
db.collection.deleteOne()
()中传入要删除的文档的查询条件即可