天天看點

MongoDB 指令1. MongoDB 的基本操作2. MongoDB 集合資料操作(CURD)

1. MongoDB 的基本操作

-- 檢視資料庫
sd

-- 切換資料庫 如果沒有對應的資料庫則建立
use 資料庫名

-- 建立集合
db.createCollection("集合名")

-- 檢視集合
show tables
show collections

-- 删除集合
db.集合名.drop()

--  删除目前資料庫
db.dropDatabase()
           

2. MongoDB 集合資料操作(CURD)

2.1 資料添加

  • 插入單條資料 db.集合名.insert(文檔)

    文檔的資料結構和

    JSON

    基本一樣。

    所有存儲在集合中的資料都是

    BSON

    格式。

    BSON

    是一種類

    json

    的一種二進制形式的存儲格式,簡稱

    Binary JSON

  • 例子

    db.resume_preview.insert({name:"張曉峰",birthday:new ISODate("2000-07- 01"),expectSalary:15000,gender:0,city:"bj"})

    沒有指定

    _id

    這個字段系統會自動生成,也可以指定

    _id

    _id

    類型是

    ObjectId

    類型是一個

    12

    位元組

    BSON

    類型資料,有以下格式:
    • 4

      個位元組表示時間戳

      ObjectId("對象Id字元串").getTimestamp()

      來擷取
    • 接下來的

      3

      個位元組是機器辨別碼
    • 緊接的兩個位元組由程序

      id

      組成(

      PID

    • 最後三個位元組是随機數
  • 插入多條資料

    db.集合名.insert([文檔,文檔])

2.2 資料查詢

2.2.1 比較條件查詢

db.集合名.find(條件)

操作 條件格式 例子 RDBMS 中的條件
等于 {key:value} db.col.find({字段名:值}).pretty() where 字段名 = 值
大于 {key:{$gt:value}} db.col.find({字段名:{$gt:值}}).pretty() where 字段名 > 值
小于 {key:{$lt:value}} db.col.find({字段名:{$lt:值}}).pretty() where 字段名 < 值
大于等于 {key:{$gte:value}} db.col.find({字段名:{$gte:值}}).pretty() where 字段名 >= 值
小于等于 {key:{$lte:value}} db.col.find({字段名:{$lte:值}}).pretty() where 字段名 <= 值
不等于 {key:{$ne:value}} db.col.find({字段名:{$ne:值}}).pretty() where 字段名 != 值

2.2.2 邏輯條件查詢

  • and

    條件

    MongoDB

    find()

    方法可以傳入多個鍵(

    key

    ),每個鍵(

    key

    ) 以逗号隔開,即正常

    SQL

    AND

    條件

    db.集合名.find({key1:value1, key2:value2}).pretty()

  • or

    條件

    db.集合名.find({$or:[{key1:value1}, {key2:value2}]}).pretty()

  • not

    條件

    db.集合名.find({key:{$not:{$操作符:value}}).pretty()

2.2.3 分頁查詢

db.集合名.find({條件}).sort({排序字段:排序方式})).skip(跳過的行數).limit(一頁顯示多少資料)

2.3 資料更新

$set :設定字段值
$unset :删除指定字段
$inc:對修改的值進行自增

db.集合名.update(
	<query>,
	<update>, 
	{ 
		upsert: <boolean>,
		multi: <boolean>,
		writeConcern: <document> 
	})
           

參數說明:

  • query

    :

    update

    的查詢條件,類似

    sql update

    查詢内

    where

    後面的。
  • update

    update

    的對象和一些更新的操作符(如

    $set,$inc...

    )等,也可以了解為

    sql update

    set

    後面的
  • upsert

    可選,這個參數的意思是,如果不存在

    update

    的記錄,是否插入

    objNew

    true

    為插入,預設 是

    false

    ,不插入。
  • multi

    可選,

    MongoDB

    預設是

    false

    ,隻更新找到的第一條記錄,如果這個參數為

    true

    ,就把按條件查 出來多條記錄全部更新。
  • writeConcern

    可選,用來指定

    mongod

    對寫操作的回執行為,比如寫的行為是否需要确認。

    舉例:

    db.集合名.update({條件},{$set:{字段名:值}},{multi:true})

writeConcern

包括以下字段:

{ w: <value>, j: <boolean>, wtimeout: <number> }

  • w:

    指定寫操作傳播到的成員數量

    比如:

    w=1

    (預設):則要求得到寫操作已經傳播到獨立的

    Mongod

    執行個體或副本集的

    primary

    成員的确認

    w=0

    :則不要求确認寫操作,可能會傳回

    socket exceptions

    networking errors

    w="majority"

    :要求得到寫操作已經傳播到大多數具有存儲資料具有投票的(

    data-bearing voting

    )成員(也就是

    members[n].votes

    值大于 的成員)的确認
  • j:

    要求得到

    Mongodb

    的寫操作已經寫到硬碟日志的确認

    比如:

    j=true

    :要求得到

    Mongodb

    (

    w

    指定的執行個體個數)的寫操作已經寫到硬碟日志的确認。

    j=true

    本身并不保證 因為副本集故障而不會復原。
  • wtimeout

    :指定

    write concern

    的時間限制,隻适用于

    w>1

    的情況

    wtimeout

    在超過指定時間後寫操作會傳回

    error

    ,即使寫操作最後執行成功,當這些寫操作傳回時,

    MongoDB

    不會撤消在

    wtimeout

    時間限制之前執行成功的資料修改。

    如果未指定

    wtimeout

    選項且未指定

    write concern

    級别,則寫入操作将無限期阻止。 指定

    wtimeout

    值為 等同于沒有

    wtimeout

    選項。

2.4 資料删除

db.collection.remove(
	<query>,
	{
		justOne: <boolean>,
		writeConcern: <document>
	}
)
           

參數說明:

  • query

    :(可選)删除的文檔的條件。
  • justOne

    : (可選)如果設為

    true

    1

    ,則隻删除一個文檔,如果不設定該參數,或使用預設值

    false

    ,則删除所有比對條件的文檔。
  • writeConcern

    :(可選)用來指定

    mongod

    對寫操作的回執行為。

繼續閱讀