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

... 

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

 

猜你喜欢

转载自www.cnblogs.com/mswei/p/11692177.html