MongoDB基本增刪改查操作-mongo shell


基礎

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")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM