MongoDB
docker启动
//打开mongo容器
docker start mongo
//进入mongo容器
docker exec -it mongo mongo admin
//验证用户
db.auth('root','root')
//第一次登录则在admin库新建超级管理员
db.createUser({ user:'root',pwd:'root',roles:[ { role:'root', db: 'admin'}]});
常见命令
//显示所有数据库
show dbs
//切换数据库
use runoob
//删除数据库
db.dropDatabase()
//向rubbo库插入数据
db.runoob.insert({"name":"张三"})
//删除集合
db.runoob.drop()
//创建集合
db.createCollection("runoob")
//查看已有集合
show collections或show tables
//插入文档(自动创建集合)
db.mycol2.insert({"name" : "张三"})
//查询文档,query:可选,使用查询操作符指定查询条件,projection 使用投影操作符指定返回的键
db.collection.find(query, projection)
//petty()方法以格式化显示所有文档使得查询出来的数据在命令行中更加美观的显示,不至于太紧凑。
db.collection.find.petty()
查询语句
普通查询
和mysql where语句比较
操作 | 格式 | 范例 | where |
---|---|---|---|
等于 | {:} | db.col.find({“name”:“张三”}) | where name=“张三” |
小于 | {:{$lt:}} | db.col.find({“likes”:{$lt:50}}) | where likes < 50 |
大于 | {:{$gt:}} | db.col.find({“likes”:{$gt:50}}) | where likes > 50 |
不等于 | {:{$ne:}} | db.col.find({“likes”:{$ne:50}}) | where likes != 50 |
类似的:
小于或等于 {:{$lte:}}
大于或等于 {:{$gte:}}
and
每个键(key)以逗号隔开,即常规 SQL 的 and 条件
db.col.find({key1:value1, key2:value2}).pretty()
db.col.find({"name":"张三", "pwd":"123456"}).pretty()
or
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
or 和 and 联合
类似常规 SQL 语句为: 'where likes>50 AND (by = ‘张三’ OR title = ‘MongoDB 教程’)'
db.col.find({"likes": {$gt:50}, $or: [{"name": "张三"},{"pwd": "123456"}]}).pretty()
$type 操作符
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
目前支持的类型
类型 | 数字 |
---|---|
Double | 1 |
String | 2 |
Object | 3 |
Array | 3 |
Object id | 7 |
Boolean | 8 |
Null | 9 |
Regular Expression | 11 |
JavaScript | 13 |
Symbol | 14 |
32-bit Integer | 16 |
Timestamp | 17 |
Min key | 255 |
Max key | 127 |
实例
db.col.find({"title":{$type:2}})
或
db.col.find({"title":{$type:'string'}})
Limit()和Skip()
limit()接受一个数字参数,该参数指定从MongoDB读取记录条数
db.COLLECTION_NAME.find().limit(NUMBER)
实例:查找col集合的前两条记录
db.col.find({},{"title":1,_id:0}).limit(2)
skip()接受一个数字参数,跳过指定数量的数据
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
实例,显示第二条文档数据
db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
sort() 方法
通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列
基本语法
db.COLLECTION_NAME.find().sort({KEY:1})
实例
db.col.find().sort({"likes":-1})
索引
索引通常能够极大的提高查询的效率
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
MongoDB使用createIndex() 方法创建索引
db.collection.createIndex(keys, options)
实例
Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1
db.col.createIndex({"title":1})
createIndex() 方法中你