1. 程式人生 > >MongoDB常用操作命令大全

MongoDB常用操作命令大全

閱讀目錄

回到頂部

建立、刪除資料庫

格式

use DATABASE_NAME

如果不存在,則建立,否則直接切換到該資料庫

顯示當前所在的資料庫

db

顯示所有資料庫

show dbs

刪除資料庫

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 }

複製程式碼

回到頂部

插入文件

文件的資料結構和json基本一致

所有儲存在集合中都是BSON格式

BSON是一種類json的一種二進位制形式的儲存格式,簡稱Binary JSON

複製程式碼

>db.col.insert({title: 'MongoDB 教程', 
    description: 'MongoDB 是一個 Nosql 資料庫',
    by: '菜鳥教程',
    url: 'http://www.runoob.com',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

複製程式碼

回到頂部

刪除文件

語法

db.collection.remove(
   <query>,
   <justOne>
)
  • query :(可選)刪除的文件的條件。
  • justOne : (可選)如果設為 true 或 1,則只刪除一個文件。

對比

  • 刪除集合中的所有文件(保留集合):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()

只讀一個文件: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型別來檢索集合中匹配的資料型別,並返回結果

示例

複製程式碼

> 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調到第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對應的值: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讀取檔案時,首先掃描整個檔案從中找到符合條件的記錄。查詢效率巨低!

索引是特殊的資料結構,索引儲存在一個易於遍歷讀取的資料集合中,索引是對資料庫表中一列或多列的值進行排序的一種結構

語法格式

db.COLLECTION_NAME.ensureIndex({KEY:1})

KEY值是要建立的索引欄位,1為指定按升序建索引,-1是指定按降序建索引。

複製程式碼

> db.col.ensureIndex({y:1})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 2,
    "numIndexesAfter" : 3,
    "ok" : 1
}

複製程式碼

回到頂部

聚合

聚合主要用來處理資料(如平均值、求和等),並返回計算後的資料結果

語法格式

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

回到頂部

複製

mongodb各個節點常見的搭配方式為:一主一從、一主多從。

主節點記錄在其上的所有操作oplog,從節點定期輪詢主節點獲取這些操作,然後對自己的資料副本執行這些操作,從而保證從節點的資料與主節點一致。

原理

副本集特徵

  • N 個節點的叢集
  • 任何節點可作為主節點
  • 所有寫入操作都在主節點上
  • 自動故障轉移
  • 自動恢復