MongoDB基本指令
-
查看当前有哪些数据库:
show dbs 或者 show databases
-
进入到指定数据库:
use <database name>
# 进入test数据库
use test
-
查看当前所处的数据库:
db
-
查看数据中所有的集合:
show collections
数据库的CRUD操作
1. 插入文档
1.1 插入一个或多个文档:db.<collection>.insert(doc)
当向集合中插入文档时,若没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来唯一标识文档
# 向test数据库中,stus集合中插入一个学生对象
db.stus.insert({name: 'tom', age: 22})
# 向test数据库中,stus集合中插入两个学生对象
db.stus.insert([{name: 'gerry', age: 20}, {name: 'tom', age: 22}])
1.2 只插入一个文档:db.<collection>.insertOne(doc)
PS: doc必须是一个对象
# 向test数据库中,stus集合中插入一个学生对象
db.stus.insert({name: 'tom', age: 22})
1.3 只插入多个文档:db.<collection>.insertMany(doc)
PS: doc必须是一个数组
# 向test数据库中,stus集合中插入两个学生对象
db.stus.insert([{name: 'gerry', age: 20}, {name: 'tom', age: 22}])
2. 查询文档
2.1 查询当前集合中的所有文档:db.<collection>.find() 或 db.<collection>.find({})
返回值:数组
# 在test数据库中,查询stus集合
db.stus.find()
# 或
db.<collection>.find({})
2.2 查询当前集合中符合某一条件的所有文档:db.<collection>.find(condition)
返回值:数组
PS: condition必须是一个对象
# 在test数据库中,查询stus集合中,name是tom的文档
db.stus.find({name: 'tom'})
2.3 查询当前集合中符合某一条件的第一条文档:db.<collection>.findOne(condition)
返回值:对象
PS: condition必须是一个对象
# 在test数据库中,查询stus集合中,name是tom的文档
db.stus.findOne({name: 'tom'})
2.4 查询文档的数量:db.<collection>.find(condition).count() 或 db.<collection>.find(condition).length()
返回值:整数
PS: condition必须是一个对象
# 在test数据库中,查询stus集合中文档的个数
db.stus.find({}).count()
# 或
db.stus.find({}).length()
3. 修改文档
3.1 用新对象替换旧对象:db.<collection>.update(queryCondition, newObject, [options])
# 在test数据库中,将name是tom的文档替换成{age:88}
db.stus.update({name: 'tom'}, {age: 88})
3.2 修改指定属性,使用修改操作符$set
来完成修改,若该属性没有,则会自动添加该属性:db.<collection>.update(queryCondition, {$set: newDataObject})
PS:update默认情况只会修改一个,若想修改多个,使用updateOne或者增加options项{multi: true}
# 将name是tom的第一个文档的age修改为20
db.stus.update({name: 'tom'}, {$set: {age: 20}})
# 将name是tom的所有文档的age修改为20
db.stus.update({name: 'tom'}, {$set: {age: 20}}, {multi: true})
3.3 同时修改多个符合条件的文档:db.<collection>.updateMany(queryCondition, {$set: newDataObject})
# 将name是tom的文档的age修改为20
db.stus.updateMany({name: 'tom'}, {$set: {age: 20}})
3.4 修改一个符合条件的文档:db.<collection>.updateOne(queryCondition, {$set: newDataObject})
# 将name是tom的文档的age修改为20
db.stus.updateOne({name: 'tom'}, {$set: {age: 20}})
3.5 替换文档:db.<collection>.replaceOne(queryCondition, newObject)
# 将name是tom的文档的age修改为20
db.stus.replaceOne({name: 'tom'}, {age: 20, address:'earth'})
4. 删除文档
4.1 删除一个或多个文档:db.<collection>.remove(queryCondition, [options])
PS:默认情况下删除多个,若想删除多个,添加配置项true
,如果只传一个空对象{},则会清空文档
# 在test数据库中,删除name是tom的所有文档
db.stus.remove({name: 'tom'})
# 在test数据库中,删除name是tom的一个文档
db.stus.remove({name: 'tom'}, true)
# 在test数据库中,清空stus集合
db.stus.remove({})
PS: 使用db.stus.remove({})清空集合性能差,直接删除集合更快db.stus.drop();
4.2 删除一个或多个文档:db.<collection>.deleteOne(queryCondition)
# 在test数据库中,删除name是tom的一个文档
db.stus.deleteOne({name: 'tom'})
4.3 删除一个或多个文档:db.<collection>.deleteMany(queryCondition)
# 在test数据库中,删除name是tom的所有文档
db.stus.deleteMany({name: 'tom'})
网友评论