MongoDB(2): 查询、索引、聚合
查询 find
- 条件操作符1
$gt、$lt、$gte、$lte - 条件操作符2
$type:[key]
可选的 key 值如下:
1: 双精度型(Double)
2: 字符串(String)
3: 对象(Object)
4: 数组(Array)
5: 二进制数据(Binary data)
7: 对象 ID(Object id)
8: 布尔类型(Boolean)
9: 日期(Date)
10: 空(Null)
11: 正则表达式(Regular Expression)
13: JS 代码(Javascript)
14: 符号(Symbol)
15: 有作用域的 JS 代码(JavaScript with scope)
16: 32 位整型数(32-bit integer)
17: 时间戳(Timestamp)
18: 64 位整型数(64-bit integer)
-1: 最小值(Min key)
127: 最大值(Max key)
db.collections.find({"name":{$type:2}} # 查找name是字符串的记录
- limt()和skip()
db.collections.find().limit(1).skip(1)
- MongoDB排序sort()
db.collection.find().sort({key:1|-1})
1升序,-1降序
db.collection.find().sort({"time":1})
索引
db.collection.createIndex(keys, options)
索引是数据库集合中一个文档或多个文档的值进行排序的一种结构,默认情况下集合的_id字段会被添加索引。
db.col.createIndex({"title":1,"description":-1})
options:
1.background: 创建索引过程是否会阻塞其它操作,默认为False后台方式创建,不影响其它
2.unique:是否为唯一索引
3. name:索引名词
索引操作:
- 查看集合索引:db.col.getIndexes()
- 查看集合索引大小:db.col.totalIndexSize()
- 删除集合所有所引:db.col.dropIndexes()
- 删除集合指定索引:db.col.dropindex(name)
聚合
db.collections.aggregate({管道:{表达式}})
常用管道命令
$project:修改输入文档的结构
$match:过滤数据
$limit:
$skip
$group
$sort
$geoNear
常用表达式
$sum, $avg, $min, $max, $first, $last
$push 将值加入一个数组中,
$addToSet将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经不存在了则不加入
db.col.aggregate({$group:{_id:$by_col_name, total:{$sum:$col_name})
# _id为必须字段,表示按哪个字段分组