MongoDB操作
閱讀目錄
- 創(chuàng)建、刪除數(shù)據(jù)庫
- 插入文檔
- 刪除文檔
- 查詢文檔
- 排序
- 索引
- 聚合
- 復(fù)制
創(chuàng)建、刪除數(shù)據(jù)庫
格式
use DATABASE_NAME如果不存在,則創(chuàng)建,否則直接切換到該數(shù)據(jù)庫
顯示當(dāng)前所在的數(shù)據(jù)庫
db顯示所有數(shù)據(jù)庫
show dbs刪除數(shù)據(jù)庫
db.dropDatabase()例子
> show dbs admin 0.078GB db_log 0.953GB local 0.078GB test 0.078GB > use del_db switched to db del_db > db.col.insert({x:123}) WriteResult({ "nInserted" : 1 }) > show dbs admin 0.078GB db_log 0.953GB del_db 0.078GB local 0.078GB test 0.078GB > db del_db > db.dropDatabase() { "dropped" : "del_db", "ok" : 1 } 回到頂部插入文檔
文檔的數(shù)據(jù)結(jié)構(gòu)和json基本一致
所有存儲(chǔ)在集合中都是BSON格式
BSON是一種類json的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱Binary JSON
>db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫',by: '菜鳥教程',url: 'http://www.runoob.com',tags: ['mongodb', 'database', 'NoSQL'],likes: 100 }) 回到頂部刪除文檔
語法
db.collection.remove(<query>,<justOne> )- query?:(可選)刪除的文檔的條件。
- justOne?: (可選)如果設(shè)為 true 或 1,則只刪除一個(gè)文檔。
對(duì)比
- 刪除集合中的所有文檔(保留集合):db.col.remove({})
- 刪除集合:db.col.drop()
案例
> db.col.find() { "_id" : ObjectId("56c55cf5ca446fab71e4c382"), "x" : 1 } { "_id" : ObjectId("56c55cf6ca446fab71e4c383"), "x" : 1 } { "_id" : ObjectId("56c55cffca446fab71e4c384"), "x" : 1 }> db.col.remove({x:1}, 1) WriteResult({ "nRemoved" : 1 }) > db.col.find() { "_id" : ObjectId("56c55cf6ca446fab71e4c383"), "x" : 1 } { "_id" : ObjectId("56c55cffca446fab71e4c384"), "x" : 1 }> db.col.remove({x:1}) WriteResult({ "nRemoved" : 2 }) > db.col.find() 回到頂部查詢文檔
讀取格式:db.COL_NAME.find()
以易讀的方式讀取:db.COL_NAME.find().pretty()
只讀一個(gè)文檔:db.COL_NAME.findOne()
AND條件
db.col.find({key1:value1, key2:value2})OR條件
db.col.find({$or: [{key1: value1}, {key2:value2}]} )條件查詢
案例:
x>1 & (y=3 or y = 4)
db.col.find( { x:{$gt:1},$or:[{y:3},{y:4}] } )?$type操作符
$type操作符是基于BSON類型來檢索集合中匹配的數(shù)據(jù)類型,并返回結(jié)果
示例
> db.col.find() { "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : 2, "y" : 3 } { "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : 3, "y" : 4 } { "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" } > db.col.find({x:{$type:2}}) { "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" } > db.col.find({x:{$type:1}}) { "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : 2, "y" : 3 } { "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : 3, "y" : 4 }limit(n)與skip(n)方法
limit顯示前n條文檔
skip調(diào)到第n條文檔開始顯示
示例
> db.col.find() { "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : 2, "y" : 3 } { "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : 3, "y" : 4 } { "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" }> db.col.find().limit(2) { "_id" : ObjectId("56c562c1ca446fab71e4c387"), "x" : 2, "y" : 3 } { "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : 3, "y" : 4 }> db.col.find().skip(1) { "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : 3, "y" : 4 } { "_id" : ObjectId("56c568a8b708aa3d13c61cc6"), "x" : "aaa" }> db.col.find().skip(1).limit(1) { "_id" : ObjectId("56c562c8ca446fab71e4c388"), "x" : 3, "y" : 4 } 回到頂部排序
格式:
db.COL_NAME.find().sort({KEY:1})KEY對(duì)應(yīng)的值:1(升序),-1(降序)
示例:
> db.col.find() { "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : 1, "y" : 3 } { "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : 2, "y" : 2 } { "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : 3, "y" : 1 }> db.col.find().sort({x:1}) { "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : 1, "y" : 3 } { "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : 2, "y" : 2 } { "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : 3, "y" : 1 }> db.col.find().sort({x:-1}) { "_id" : ObjectId("56c572c8ca446fab71e4c38c"), "x" : 3, "y" : 1 } { "_id" : ObjectId("56c572c2ca446fab71e4c38b"), "x" : 2, "y" : 2 } { "_id" : ObjectId("56c56dd4ca446fab71e4c38a"), "x" : 1, "y" : 3 } 回到頂部索引
如果沒有索引,MongoDB讀取文件時(shí),首先掃描整個(gè)文件從中找到符合條件的記錄。查詢效率巨低!
索引是特殊的數(shù)據(jù)結(jié)構(gòu),索引存儲(chǔ)在一個(gè)易于遍歷讀取的數(shù)據(jù)集合中,索引是對(duì)數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)
語法格式
db.COLLECTION_NAME.ensureIndex({KEY:1})KEY值是要?jiǎng)?chuàng)建的索引字段,1為指定按升序建索引,-1是指定按降序建索引。
> db.col.ensureIndex({y:1}) {"createdCollectionAutomatically" : false,"numIndexesBefore" : 2,"numIndexesAfter" : 3,"ok" : 1 } 回到頂部聚合
聚合主要用來處理數(shù)據(jù)(如平均值、求和等),并返回計(jì)算后的數(shù)據(jù)結(jié)果
語法格式
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 回到頂部復(fù)制
mongodb各個(gè)節(jié)點(diǎn)常見的搭配方式為:一主一從、一主多從。
主節(jié)點(diǎn)記錄在其上的所有操作oplog,從節(jié)點(diǎn)定期輪詢主節(jié)點(diǎn)獲取這些操作,然后對(duì)自己的數(shù)據(jù)副本執(zhí)行這些操作,從而保證從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn)一致。
原理
副本集特征
- N 個(gè)節(jié)點(diǎn)的集群
- 任何節(jié)點(diǎn)可作為主節(jié)點(diǎn)
- 所有寫入操作都在主節(jié)點(diǎn)上
- 自動(dòng)故障轉(zhuǎn)移
- 自動(dòng)恢復(fù)
?
本文轉(zhuǎn)自jihite博客園博客,原文鏈接:http://www.cnblogs.com/kaituorensheng/p/5198126.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
- 上一篇: Minimal安装CentOS 7使用y
- 下一篇: 黑客内参--浅谈DIV+CSS的优势