基礎
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,具體可查閱官方文檔。
腳本導入
官方文檔的鏈接:
https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/
語法差異
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")