MongoDB 學習筆記

2021-10-04 00:13:37 字數 3080 閱讀 6516

mongodb 將資料儲存為乙個文件。mongodb是乙個基於分布式檔案儲存的資料庫。

鏈結格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostn[:portn]]][/[database][?options]]
乙個mongodb中可以建立多個資料庫,mongodb的預設資料庫為"db",該資料庫儲存在data目錄中。

文件是乙個鍵值(key-value)對(即bson)。mongodb 的文件不需要設定相同的字段,並且相同的字段不需要相同的資料型別。

查詢乙個文件:db.$.findone(criteria)

mongodb and 條件: mongodb 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,及常規 sql 的 and 條件。>db.col.find().pretty()mongodb or 條件: mongodb or 條件語句使用了關鍵字 $or,語法格式如下,相當於:where (key1=value1 or key2=value2)

objectid

objectid 是乙個12位元組 bson 型別資料,有以下格式:

mongodb中儲存的文件必須有乙個"_id"鍵。這個鍵的值可以是任何型別的,預設是個objectid物件。

在乙個集合裡面,每個集合都有唯一的"_id"值,來確保集合裡面每個文件都能被唯一標識。

mongodb採用objectid,而不是其他比較常規的做法(比如自動增加的主鍵)的主要原因,因為在多個 伺服器上同步自動增加主鍵值既費力還費時

db.col.find(, ]

}).pretty()

刪除文件:db.$.remove(,)

結果集排序

mongodb sort()方法:在mongodb中使用使用sort()方法對資料進行排序,sort()方法可以通過引數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 為公升序排列,而-1是用於降序排列。例如:db.$.find().sort()

集合就是 mongodb 文件組,類似於 rdbms (關聯式資料庫管理系統:relational database management system)中的表。

rdbms

mongodb

資料庫資料庫

**集合行文件

列字段表聯合嵌入文件

主鍵主鍵:mongodb 提供了 key 為_id

見: 索引通常能夠極大的提高查詢的效率,如果沒有索引,mongodb在讀取資料時必須掃瞄集合中的每個檔案並選取那些符合查詢條件的記錄

建立索引: ensureindex() 方法,db.$.ensureindex()。語法中 key 值為你要建立的索引字段,1為指定按公升序建立索引,如果你想按降序來建立索引指定為-1即可。

會做什麼樣的查詢?其中那些查詢會需要索引

每個鍵的索引方向是什麼?(倒序還是逆序)

如何應對擴充套件?有沒有不用的鍵排列可以使常用的資料更多的保留在記憶體中

對某個建立的索引查詢會加速,而對於其他查詢可能沒有幫助。

使用多個字段建立索引, 例如:db.col.createindex(),對titile(公升序) 和 description(降序) 建立了聯合索引

explain: 返回查詢使用的索引情況、耗時以及掃瞄的文件的統計資訊

hint: 強制使用索引

mongodb中聚合(aggregate)主要用於處理資料(諸如統計平均值,求和等),並返回計算後的資料結果。有點類似sql語句中的 count(*)。aggregate() 方法的基本語法格式如下所示:

db.collection_name.aggregate(aggregate_operation)
例子:

db.orders.aggregate([

},} }

])

相當於 sql:select sum(amount) from orders where status='a' group by cust_id;

更多的 sql和 mongo agg 對比關係:

管道在unix和linux中一般用於將當前命令的輸出結果作為下乙個命令的引數。

mongodb的聚合管道將mongodb文件在乙個管道處理完畢後將結果傳遞給下乙個管道處理。管道操作是可以重複的。

聚合常見的操作:

mongodb複製是將資料同步在多個伺服器的過程。

複製提供了資料的冗餘備份,並在多個伺服器上儲存資料副本,提高了資料的可用性, 並可以保證資料的安全性。

複製還允許您從硬體故障和服務中斷中恢復資料。

在mongodb裡面存在另一種集群,就是分片技術,可以滿足mongodb資料量大量增長的需求。

當mongodb儲存海量的資料時,一台機器可能不足以儲存資料也足以提供可接受的讀寫吞吐量。這時,我們就可以通過在多台機器上分割資料,使得資料庫系統能儲存和處理更多的資料。

>db.test.find(})
或者:

>db.test.find()
docker pull mongo
docker run -p 27017:27017 -v :/data/db --name mongodb -d mongo
docker run -p 27017:27017 -v ~/data/docker/mongo:/data/db --name mongodb -d mongo
docker ps
docker rm mongodb
docker stop mongodb
docker exec -it mongodb bash

MongoDB學習筆記

從接觸計算機學習開始,我所使用的資料庫就是mysql,oracle這樣的關係型資料庫。早就聽說了nosql的概念,也對其有代表性的非關係型資料庫mongodb有所耳聞,一直想學習學習這項從未使用過的技術,可是由於種種原因,又沒有時間來學習學習這項新的概念。也就是這麼巧,目前的工作中,使用到的就是mo...

mongodb學習筆記

匯入json檔案命令 mongoimport db test collection user file d new.json mongodb查詢某一條件的資料插入到集合中 var result db.csmdr.find while result.hasnext db.新建表名.insert res...

MongoDB 學習筆記

import pymongo client pymongo.mongoclient localhost 27017 利用pymongo的mongoclinet 方法構造clinet xiaoshuo client xiaoshuo 利用clinet物件建立xiaoshuo表 sheet 1 xiao...