这篇主要写一下比较少见的, 却很高效的mongo操作
一. mongo 数据的操作
1. 查看最新插入的一条数据(按照文档在磁盘上的存储顺序进行排序)
1
| db.test.find().sort({$natural:-1})
|
2. 查询数据显示指定列(只显示_id字段)
1
| db.test.find({}, {'_id':1})
|
3. 查询的表名包含- (例:test-a)
使用db.test-a.find()会报错
1
| db.getCollection('test-a').find()
|
4. 查看reviews表共有多少不同商品名称(按照指定字段分组)
1
| db.reviews.distinct("product_name")
|
5. 更新多条符合条件的数据(将subjects集合中所有id_status为run的数据更新为new)
1
| db.subjects.update({'id_status':'run'},{$set:{'id_status':'new'}},{multi:true})
|
…..
6. mongo聚合查询
查询在指定时间段内的数据, 按照product_id分组, 并排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 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数据库大小
1 2 3 4
| use test db.stats() 或 show dbs
|
2. 查看集合(表)test_a的大小
1 2
| db.test_a.dataSize() # db.collection.dataSize()
|
3. 查看为集合分配的空间大小, 包括未使用的空间
1
| db.collection.storageSize()
|
4. 查看集合索引大小
1
| db.collection.totalIndexSize()
|
5.查看集合的数据和索引的大小
1
| db.collection.totalSize()
|
6. 查看正在执行的sql的进程
7. 杀死 关闭 正在执行的sql进程
….
三. 数据库的导入和导出
1. 导出数据
1 2
| 1.导出为json格式文件:mongoexport -d <数据库名称> -c <collection名称> -o <json文件名称> 2.导出为csv格式文件:mongoexport -d <数据库名称> -c <collection名称> --csv - f <key字段(key字段如下图所示,字段之间用逗号分隔)> - o <csv文件名称>
|
2. 导入数据
1 2
| 1.导入json格式文件数据: mongoimport -d <数据库名称> -c <collection名称> --file <要导入的json文件名称> 2.导入csv格式文件数据:mongoimport -d <数据库名称> -c <collection名称> --type csv --headerline --file <csv文件名称>
|
例:
1 2 3 4 5 6 7 8
| # 导出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
|
…
好了 , 今天到这里就差不多了 , 以后再遇见高级的用法, 会不断更新的, 欢迎关注哦