基础
1.查看所有数据库:
show dbs
2.选择数据库:
use test
3.查看数据库中有哪些集合:
show collections
如下图:
查询
1.查看集合中有哪些数据,其中abc为集合名称:
2.为查询添加过滤条件a=2:
3.指定查询结果集中包含的字段,如下查询仅包含字段a/b,注意,此处除了_id字段外,其他字段要么全是1,要么全是0:
4.综合示例:
db.kpiRecord.find( { cellCode:"48BF74_12020000051TST0001", startTime: { $gte: new ISODate("2018-06-01T00:00:00Z") }, startTime: { $lt: new ISODate("2018-06-01T01:00:00Z") } }, { _id:0, cellCode:1, startTime:1, kpiNameLalalalala0000:1 })
如下图:
插入
1.添加一条记录:
db.abc.insertOne({ "123" : "123-val", "a" : 34, "b" : 36})
如下图:
2.添加多条记录:
db.abc.insertMany([ { "123" : "123-val0", "a" : 35, "b" : 37}, { "123" : "123-val1", "a" : 36, "b" : 38}])
如下图:
更新
按筛选条件更新数据:
db.abc.updateMany( { a: {$gt : 10} }, { $set: { "b": 54321, "123": 54321} })
如下图:
删除
1.根据条件删除集合中的数据:
db.abc.deleteMany({ a : {$gte : 36}})
如下图:
2.删除集合,其中abc为集合名称:
3.删除数据库,其中pm为数据库名称:
聚合
先根据cellCode字段和startTime字段进行筛选,再根据cellCode进行聚合,计算出总和、最大值、最小值、平均值,其中pretty()方法只是为了以更整齐的方式显示结果:
db.kpiRecord.aggregate([ { $match: { cellCode:"48BF74_12020000051TST0001", startTime: {$gte: new ISODate("2018-06-01T00:00:00Z")}, startTime: {$lt: new ISODate("2018-06-01T01:00:00Z")} } }, { $group: { _id: "$cellCode", count: { $sum: 1 }, sum: {$sum: "$kpiNameLalalalala0000"}, max: {$max: "$kpiNameLalalalala0000"}, min: {$min: "$kpiNameLalalalala0000"}, avg: {$avg: "$kpiNameLalalalala0000"} } }]).pretty()
如下图:
限制条件:
(1).结果集document大小限制:结果集中,每一个document的大小不得超过16M。注意仅是限制结果集,处理过程中,document的大小是可以超过这个限制的。(2).内存限制:Stages所能使用的内存不能超过100M。对于一些数据量较大的聚合计算,100M不够用,这时,需要指定allowDiskUse属性,从而允许MongoDB向临时文件中写数据。注意,对于$graphLookup操作符,allowDiskUse不生效。另外,这里介绍的聚合方式是pipeline,最基本的聚合方式,MongoDB还有更复杂但也更强大的聚合方式,如Map-reduce,具体可查阅官方文档。
脚本导入
官方文档的链接:
语法差异
1.有一些语句,在mongo shell中可以执行,但在脚本中是无法执行的,需要换一种写法。下表中列出了转换写法。
2.查询语句,需要按如下方式书写:
cursor = db.collection.find();while ( cursor.hasNext() ) { printjson( cursor.next() );}
示例
1.写一个脚本,如下是一个示例:
db.abc.updateMany({"field_a":"a-v-0"}, { $set: {"field_b": "update-newodododo"} })db.abc.insertMany([ { "field_a" : "js-new-a", "field_b" : "js-new-b", "field_c" : "js-new-c" }, { "field_a" : "js-new-a-1", "field_b" : "js-new-b-1", "field_c" : "js-new-c-1" }])
2.导入脚本,有两种方式:一是从命令行直接执行导入,二是先登入mongo shell再执行导入
2.1.第一种方式,命令行直接导入:
mongo -u "username" -p "password" --authenticationDatabase="admin" ./mongo-operation-script.js
2.2.第二种方式,从mongo shell执行导入:
load("/root/mongo-operation-script.js")