操作命令与方法,需要先通过 mongo 命令进入交互模式中。或者使用 MongoDB 图形化操作软件中使用。
一、数据库常用命令与方法
1. 查看所有的数据库
$ show dbs
注意:当某个数据库下没有数据时是 show 不出来的。
2. 创建/切换数据库
$ use <数据库名>
注意:要切换的数据库不存在时,会先创建出来再切换过去。
3. 查看当前使用的数据库
$ db
$ db.getName()
4. 显示当前数据库状态
$ db.stats()
5. 删除当前数据库
$ db.dropDatabase()
注意:通过 show dbs 查看是否还在
二、集合(collection)常用命令与方法
1. 创建集合
$ db.createCollection('集合名字')
2. 查看当前数据库下所有的集合
$ db.getCollectionNames()
$ show collections
3. 删除集合
$ db.集合名.drop()
三、文档(document)常用命令与方法
1. 添加
- save
$ db.<集合名>.save( document )
- insert
$ db.<集合名>.insert( docuemnt || [...document] )
- insertOne
$ db.<集合名>.insertOne( document )
- insertMany
$ db.<集合名>.insertMany([...document])
2. 修改
- save
注意:
传入 _id 时,可实现修改
可以理解为直接覆盖之前的 document
$ db.<集合名>.save( document )
- update
$ db.<集合名>.update(
<query>,
<update>,
<options>
}
- query:查询条件
- update:修改内容 !!!
- options:一些额外选项配置
- upsert:如果查询不到的时候是否直接增加这条记录。默认是 false
- multi:是否更新多条,默认是 false
- updateOne
- updateMany
3. 删除
- remove
$ db.<集合名>.remove(
<query>,
<options>
)
- query:查询条件
- options:配置项
- justOne:是否只删除一条,默认是 false
- deleteOne
- deleteMany
4. 查询
- 查询所有记录
$ db.hello.find()
- 查询 age = 22 的记录
$ db.hello.find( { age: 22 } )
- 查询 age > 22 的记录
$ db.hello.find( { age: { $gt: 22 } } )
- 查询 age < 22 的记录
$ db.hello.find( { age: { $lt: 22 } } )
- 查询 age >= 22 的记录
$ db.hello.find( { age: { $gte: 22 } } )
- 查询 age <= 22 的记录
$ db.hello.find( { age: { $lte: 22 } } )
- 查询 age != 22 的记录
$ db.hello.find( { age: { $ne: 22 } } )
- 查询 age >= 23 并且 age <= 26 的记录
$ db.hello.find( { age: { $gte: 23, $lte: 26 } } )
- 查询 age >= 50 或者 name = 林强 的记录
$ db.hello.find( { $or: [ { age: { $gte: 50 } }, { name: '林强' } ] } )
- 查询 name = 张三 并且 age = 20 的记录
$ db.hello.find({ name: '张三', age: 20 })
- 查询 name 中包含 mongo 的记录
$ db.hello.find({ name: /mongo/ })
- 查询 name 中以 张 开头的记录
$ db.hello.find({ name: /^张/ })
- 查询 name 中以 mongo 结尾的记录
$ db.hello.find({ name: /mongo$/ })
- 查询 指定 name、age 字段的记录
# _id 会默认有
$ db.hello.find({}, { name: 1, age: 1 })
# 如果不想要 _id
$ db.hello.find({}, { name: 1, age: 1, _id: 0 })
# 如果只是排除掉一个或几个
$ db.hello.find({}, { address: 0 })
- 查询 指定 name、age 字段并且 age > 45 的记录
$ db.hello.find({ age: { $gt: 45 } }, { name: 1, age: 1 })
- 查询 按 age 升序的记录
$ db.hello.find().sort({ age: 1 })
- 查询 按 age 倒序的记录
$ db.hello.find().sort({ age: -1 })
- 查询 10 条之后的记录。(跳过前10条)
$ db.hello.find().skip(10)
- 查询 5 条记录。(限制条数)
$ db.hello.find().limit(5)
- 查询 10 条之后的 5 条记录
$ db.hello.find().skip(10).limit(5)
- 查询 第一条 记录
$ db.hello.findOne()
- 获取查询结果的个数
$ db.hello.find().count()