一、数据库操作
- 新建
use test
- 查看
db
或者:
show dbs
注意:数据库中如果没有数据,show dbs是不会展示数据的
插入一些数据:
db.test.insert({"name":"lizza"})
- 删除
-- 查看有哪些库
show dbs
-- 切换数据库
use test1
-- 删除数据库
db.dropDatabase()
二、集合操作
- 创建集合
db.createCollection(name, options)
参数说明:
- name: 要创建的集合名称
- options: 可选参数,指定有关内存大小及索引的选项
字段 | 类型 | 描述 |
capped | 布尔 | (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达当该值为 true 时,必须指定 size 参数。到最大值时,它会自动覆盖最早的文档。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 |
size | 数值 | (可选)为固定集合指定一个最大值,以千字节计(KB)。如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集 |
示例:
use test
db.createCollection("user")
- 查看已有集合
show collections
注意:在MongoDB中不需要创建集合,当用户插入一些文档时,MongoDB会自动创建集合
- 删除集合
语法:
db.collection_name.drop()
示例:
db.test.drop()
三、文档操作
- 插入文档
语法:
db.collection_name.insert(document)
示例:
db.test.insert({name: 'robert', sex: 'male', age: '18', tags: ['mongodb', 'database', 'NoSQL'], address: {ip: '0.0.0.0', name: '黑龙江佳木斯'}})
- 查看已插入的文档
db.test.find()
- 插入一条
db.test.insertOne({a: 1})
- 插入多条
db.collection.insertMany({a: 1, b: 2})
- 更新文档
语法
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,不插入
- mult:可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
- writeConcern:可选,抛出异常的级别
示例:
db.test.update({name: 'lizza'}, {$set:{name: 'Lizza'}})
- 删除文档
语法:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query:(可选)删除的文档的条件
- justOne :(可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档
- writeConcern:(可选)抛出异常的级别
示例:
db.test.remove({name: 'Lizza'})
- 查询文档
语法:
db.test.find(query, projection)
- query:可选,使用查询操作符指定查询条件
- projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
- MongoDB与RDBMS Where语句比较
操作 | 格式 | 范例 | RDBMS中的类似语句 |
等于 | { : } | db.col.find({“name” : “robert”}).pretty() | where name = ‘robert’ |
小于 | { : {$lt : }} | db.col.find({“age” : {$lt: 50}}).pretty() | where age < 50 |
小于或等于 | { : {$lte : }} | db.col.find({“age” : {$lte : 50}}).pretty() | where age <= 50 |
大于 | { : {$gt : }} | db.col.find({“age” : {$gt : 50}}).pretty() | where age > 50 |
大于或等于 | { : {$gte : }} | db.col.find({“age” : {$gte : 50}}).pretty() | where age >= 50 |
不等于 | { : {$ne : }} | db.col.find({“age” : {$ne:50}}).pretty() | where age != 50 |
- MongoDB AND条件
MongoDB的find()方法可以传入多个键(key),每个键(key)以逗号隔开,即常规SQL的AND条件
语法格式如下:
db.test.find({key1:value1, key2:value2}).pretty()
- 示例:
db.test.find({name : 'robert', age : '18'}).pretty()
- MongoDB OR条件
MongoDB OR条件语句使用了关键字$or,语法格式如下:
db.test.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
示例:
db.test.find({$or : [{age : '15'}, {age : '18'}]}).pretty()
- 模糊查询
-- 查询name中包含r的
db.test.find({name : /r/})
-- 查询name中以r开头的
db.test.find({name : /^r/})
-- 查询name中以r结尾的
db.test.find({name : /r$/})
- MongoDB $type 操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果
类型 | 数字 | 备注 |
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binarydata | 5 | |
Undefined | 6 | 已废弃。 |
Objectid | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 | |
RegularExpression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript(withscope) | 15 | |
32-bitinteger | 16 | |
Timestamp | 17 | |
64-bitinteger | 18 | |
Minkey | 255 | Querywith-1. |
Maxkey | 127 |
示例:
-- 查询所有结果集
db.test.find().pretty()
-- 查询name类型为string的数据
db.test.find({name : {$type : 2}})
db.test.find({title : {$type : 'string'}})
- Limit方法
如果需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数
语法:
db.collection_name.find().limit(number)
- Skip方法
skip()方法用来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数
语法:
db.collection_name.find().limit(number).skip(number)
limit()和skip()方法组合使用可以实现分页需求
- MongoDB排序(sort()方法)
在MongoDB中使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列
语法:
db.collection_name.find().sort({key : 1})
示例:
db.test.find().sort({name : 1})