mongoDB命令总结

mangodb数据库

use 选中或创建数据库
db 全局对象
show collections 
db.stats()当前数据库的信息
db.getMongo() 当前Mongo连接的服务器和端口
db.createCollection("集合名")创建集合
db.表名.insert(post)提交
db.表名.find()查看表全部
db.表名.find().pretty()可视化
db.表名.distinct('key') 去重复
db.表名.find({key:vules}) 查找
db.表名.find({key:{$lt:55,$gt:45}}).pretty()大于45小于55的
lt <   lte<=    gt>    gte>= 
db.表名.find({key:/字段/}).pretty() 查找正则包含字段
db.表名.find({},{name:0}) 只显示name
db.表名.find().sort({age:1})  对age升序 -1降序
db.表名.find().limit(数字) 取前几条的数据  skil( )跳过几条数据
db.表名.find({$or:[{},{}]})条件或
db.表名.count()统计有几条数据
save 和 insert 都可以增加数据 如果不带id 俩一样 如果带id insert增加id属性当集合里面有该id对应的数据插入时会报错 dup     save设置相同的id时会修改集合里的数据

db.表名.find({key:{$ne:*}})  找key不等于*
db.表名.find({key:{$in:[“a”,“b”]}})找key有a,b的
db.表名.find({key:{$nin:[  ]}}) 不在的
db.表名.find({key:{$exists:true}}) 找有key的
db.表名.find({key:{&type:类型}}) 找key是某类型的
db.表名.createIndex({name:1}) 建索引  (可以快速查询)
db.表名.dropIndexes()  删除索引

db.表名.aggregate([$group:{_id:'$key',total:{$sum:1}}])以key分组并计算各组有几条数据
db.表名.aggregate([$group:{_id:'$key1',avg:{$avg:"$key2"}}])以key1分组并求出各组key2的平均值avg可以是min,max;push把每组的信息都打印出来

> db.pyuser.aggregate([{$group:{_id:"$key",names:{$addToSet:"$key2"}}}])以key分组并去掉key2里的重复

> db.pyuser.aggregate([{$group:{_id:"$key1",firestName:{$first:"$key2"}}}])以key1分组并拿到各组key2里的第一个  last最后一个

> db.pyuser.aggregate([{$group:{_id:null,totalScore:{$sum:"$score"}}}]) 以求score的总和

管道概念:
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个条件/命令的参数
MongoDB的聚合管道是将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理,管道的操作是可以重复的。

管道操作有以下几个:
$project
修改文档的结构,可以用来重命名,增加或者删除文档中的字段

db.pyuser.aggregate({$project:{_id:0,key1:1,score:{$add:["$key2",*]}}})显示key1和key2加*的和

$match
作用过滤文档,相当于find()第一个参数

> db.pyuser.aggregate([{$match:{score:{$gt:80,$lt:100}}}])

注意:
1.$match中不能和$wehere 表达式混合使用
2.如果$match 位于管道的第一个阶段,可以利用索引提高查询速度
3.$match尽量出现在管道的最前面,过滤出需要的数据,在后续的阶段中可以提高效率
4.$match 中使用$text操作符的话,智能位于管道的第一阶段

$sort
> db.pyuser.aggregate([{$sort:{score:1}}]) 升序
$limit
 db.pyuser.aggregate([{$limit:2}]) 取前两条
$skip
> db.pyuser.aggregate([{$skip:2}]) 跳过前两条

###表达运算操作符

$or  $nor   $not    $and

###比较运算操作符

$eq  $ne   $gt   $lt  $gte    $lte  

聚合管道的优化

这是一个策略:
1.将$match和$sort放到管道的前面,可以给集合建立索引,提高处理数据的效率
2.可以使用$match  $limit  $skip  对文档进行过滤,减少后续处理文档的数量


阶段优化
1.$sort + $match
顺序优化
如果 $match 在 $sort之后,优化器会自动把$match 放到 $sort之前

2.$limit + $skip

如果$skip 在 $limit之后,优化器会把$limit移动到$skip之前,移动后的$slimit的值等于原来的值加上$skip的值
eg:skip 10 limit 5 =====> limit 15 skip 10 

聚合管道的限制作用就是对返回结果大小和内存的限制

MongoDB对返回结果的大小限制
返回一个文档大小不能超过16M  只是MongoDB 2.6之前规定的
2.6之后返回的结果可以是一个游标或者存到集合中,返回不在受制16M


内存要求
管道每一个阶段 只能使用100M的内存
如果超过100M会报错,如果处理大数据时,可以使用allowDiskUser选项,将数据存到磁盘上

以上的可以称为多目管道

单目管道
distinct()\count()

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值