Mongo 高级骚操作

这篇主要写一下比较少见的, 却很高效的mongo操作

一. mongo 数据的操作

1. 查看最新插入的一条数据(按照文档在磁盘上的存储顺序进行排序)

db.test.find().sort({$natural:-1})

2. 查询数据显示指定列(只显示_id字段)

db.test.find({}, {'_id':1})

3. 查询的表名包含- (例:test-a)

使用db.test-a.find()会报错

db.getCollection('test-a').find()

4. 查看reviews表共有多少不同商品名称(按照指定字段分组)

db.reviews.distinct("product_name")

5. 更新多条符合条件的数据(将subjects集合中所有id_status为run的数据更新为new)

db.subjects.update({'id_status':'run'},{$set:{'id_status':'new'}},{multi:true})
.....

6. mongo聚合查询

查询在指定时间段内的数据, 按照product_id分组, 并排序

db.reviews.aggregate([
  {$match : {rate_date: {$lt: 10000000000000000, $gt: 0}}},
  {
    $group: {
      _id: {
        product_id: "$product_id"
      },
      count: {
        $sum: 1
      }
    }
  },
  {$sort:{count:-1}}
])

 

二. mongo系统的操作

1. 查看test数据库大小

use test
db.stats()
或
show dbs

2. 查看集合(表)test_a的大小

db.test_a.dataSize()
# db.collection.dataSize()

 3. 查看为集合分配的空间大小, 包括未使用的空间

db.collection.storageSize()

4. 查看集合索引大小

db.collection.totalIndexSize()

5.查看集合的数据和索引的大小

db.collection.totalSize()

6. 查看正在执行的sql的进程

db.currentOp() 

7. 杀死 关闭 正在执行的sql进程

db.killOp(id)

....

 

三. 数据库的导入和导出

1. 导出数据

1.导出为json格式文件:mongoexport -d <数据库名称> -c <collection名称> -o <json文件名称>
2.导出为csv格式文件:mongoexport -d <数据库名称> -c <collection名称> --csv - f <key字段(key字段如下图所示,字段之间用逗号分隔)> - o <csv文件名称>

2. 导入数据

1.导入json格式文件数据: mongoimport -d <数据库名称> -c <collection名称> --file <要导入的json文件名称>
2.导入csv格式文件数据:mongoimport -d <数据库名称> -c <collection名称> --type csv --headerline --file <csv文件名称

例:

# 导出json文件
mongoexport -d dbName -c collecTionName -o ./collecTionName.json
# 导出collecTionName表中id_status为new的数据
mongoexport -d dbName -c collecTionName -q"{'id_status':'new'}" -o ./collecTionName.json
# 导入json文件,并更新数据(以文件中的数据为准)
mongoimport -d dbName -c collecTionName --mode upsert --file ./collecTionName.json
mongoimport -d dbName -c collecTionName --upsert --file ./collecTionName.json
... 

好了 , 今天到这里就差不多了 , 以后再遇见高级的用法, 会不断更新的, 欢迎关注哦

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不止于python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值