1、添加文檔

db.集合名.insert({k1:v1,k2:v2...}) :向當前資料庫的該集合下添加文檔

我們在添加文檔的時候有如下注意點:

a) 文檔就是鍵值對,數據類型是 BSON 格式,支持的值更加豐富。 BSON 是 JSON 的擴展,新增了諸如日期,浮點等 JSON 不支持的數據類型。

b) 在添加的文檔裡面,都有一個 _id 的鍵,值為對象類型 ObjectID ,在這裡,我們解釋下 ObjectID 類型:

每個文檔都有一個 _id 欄位,並且同一集合中的 _id 值唯一,該欄位可以是任意類型的數據,默認是一個 ObjectID 對象。 ObjectID 對象數據組成:時間戳|機器碼|PID|計數器 _id 的鍵值我們可以自己輸入,但是不能重複,但要注意的一點是在插入數據的時候,如果 _id 的值重複則會報錯

c) 可以使用 js 代碼來完成批量插入文檔

example:

> for(var i=1;i<=10;i++){
... db.php.insert({name:xiaobai+i,age:i,email:[email protected]})
... }
WriteResult({ "nInserted" : 1 })
> db.php.find()
{ "_id" : ObjectId("5b931b74a39e4f4842ba36b3"), "name" : "xiaoming", "age" : 20, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaohong", "age" : 18, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36b5"), "name" : "xiaobai1", "age" : 1, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36b6"), "name" : "xiaobai2", "age" : 2, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36b7"), "name" : "xiaobai3", "age" : 3, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36b8"), "name" : "xiaobai4", "age" : 4, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36b9"), "name" : "xiaobai5", "age" : 5, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36ba"), "name" : "xiaobai6", "age" : 6, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bb"), "name" : "xiaobai7", "age" : 7, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bc"), "name" : "xiaobai8", "age" : 8, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bd"), "name" : "xiaobai9", "age" : 9, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36be"), "name" : "xiaobai10", "age" : 10, "email" : "[email protected]" }

2、刪除文檔

db.集合名.remove{(條件)} :刪除當前資料庫下指定集合中滿足條件的文檔(不寫條件則刪除所有的文檔)

example:

> db.php.remove({age:20})
WriteResult({ "nRemoved" : 1 })
> db.php.remove({age:{$lt:6}})
WriteResult({ "nRemoved" : 5 })
> db.php.find()
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaohong", "age" : 18, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36ba"), "name" : "xiaobai6", "age" : 6, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bb"), "name" : "xiaobai7", "age" : 7, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bc"), "name" : "xiaobai8", "age" : 8, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bd"), "name" : "xiaobai9", "age" : 9, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36be"), "name" : "xiaobai10", "age" : 10, "email" : "[email protected]" }

這裡我們在刪除 php 集合中年齡小於6的文檔時,我們使用了操作符來完成。

比較運算符

操作符效果$gt大於$lt小於$gte大於等於$lte小於等於$exists存在與否$in包含$ne不等於$nin不包含

邏輯運算符

操作符效果$exists存在與否$or或者$and並且$not不存在$mod求模$where位置

特別的 $exists: true 表示欄位存在

排序 sort

操作效果$asc升序$desc降序

3、更新文檔

更新文檔有兩種方式進行修改

方法一、直接修改

db.集合名.update({條件},{新的文檔}) :修改當前資料庫下指定集合中滿足條件的文檔信息

example:

> db.php.find()
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaohong", "age" : 18, "email" : "[email protected]" }
> db.php.update({age:18},{name:xiaobai5})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.php.find()
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaobai5" }

db.集合.update(條件,新文檔,是否新增,是否修改多條) :修改當前資料庫下指定集合中滿足條件的文檔信息

  • 是否新增:如果值是1(true)則沒有滿足條件的 則添加
  • 是否修改多條:若值是1(true),如果滿足條件的有多個文檔 則都要修改

example:

> db.php.update({age:10},{name:xiaoli},true,true)
WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 9,
"errmsg" : "multi update only works with $ operators"
}
})

方法二、使用修改器

example:

我們要修改 age=6 的文檔名稱為 xiaosan ,並且其他鍵值不能丟失

我們可以使用修改器

  • $inc :加上一個數字
  • $set :修改某一個欄位,如果該欄位不存在就增這個欄位

語法:db.集合名.update({條件},{修改器名稱:{修改的鍵:修改的新值}})

> db.php.update({age:6},{$set:{name:xiaosan}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

那如果我們要修改 age=10 的文檔的年齡增加十歲,我們可以這樣做:

> db.php.update({age:10},{$inc:{age:10}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

4、查詢文檔

語法: db.集合名.find({條件})

example:

取出 php 集合裡面的第一個文檔

> db.php.findOne()
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaobai5" }

取出 php 集合裡面 age=6 的文檔

> db.php.find({age:6})
{ "_id" : ObjectId("5b931dfba39e4f4842ba36ba"), "name" : "xiaosan", "age" : 6, "email" : "[email protected]" }

取出 php 集合裡面 age>8 的文檔

> db.php.find({age:{$gt:8}})
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bd"), "name" : "xiaobai9", "age" : 9, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36be"), "name" : "xiaobai10", "age" : 20, "email" : "[email protected]" }

取出 php 集合裡面的文檔,只顯示 name 鍵

> db.php.find({},{age:1})//1表示只顯示age鍵值
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4") }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36ba"), "age" : 6 }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bb"), "age" : 7 }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bc"), "age" : 8 }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bd"), "age" : 9 }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36be"), "age" : 20 }
> db.php.find({},{age:0})//1表示除了顯示age鍵值,其他的都顯示
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaobai5" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36ba"), "name" : "xiaosan", "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bb"), "name" : "xiaobai7", "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bc"), "name" : "xiaobai8", "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bd"), "name" : "xiaobai9", "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36be"), "name" : "xiaobai10", "email" : "[email protected]" }

根據年齡的(降序|升序)來顯示文檔

db.集合名.find().sort({age:1})根據年齡升序
db.集合名.find().sort({age:0})根據年齡降序

顯示 php 集合中的前三個文檔

> db.php.find().limit(3)
{ "_id" : ObjectId("5b931b7ca39e4f4842ba36b4"), "name" : "xiaobai5" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36ba"), "name" : "xiaosan", "age" : 6, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bb"), "name" : "xiaobai7", "age" : 7, "email" : "[email protected]" }

顯示 php 集合中的第三個文檔到第五個文檔

> db.php.find().skip(2).limit(3)
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bb"), "name" : "xiaobai7", "age" : 7, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bc"), "name" : "xiaobai8", "age" : 8, "email" : "[email protected]" }
{ "_id" : ObjectId("5b931dfba39e4f4842ba36bd"), "name" : "xiaobai9", "age" : 9, "email" : "[email protected]" }

統計 php 集合中文檔的個數

db.集合名.count():返回集合中有多少個文檔

作者:Angel_Kitty

鏈接:imooc.com/article/75436來源:慕課網

推薦閱讀:

如何確定自己是否適合做程序員?

半路學編程,可以成為大牛嗎?

如何使用 GitHub?

在做程序員的道路上,你掌握了什麼概念或技術使你感覺自我提升突飛猛進?

你看過/寫過哪些有意思的代碼?

如何在程序里留下彩蛋?

為什麼部分程序員下班後只關顯示器不關電腦?

有哪些好笑的關於程序員的笑話?

如何防止自己被人肉搜索到?

面試必備之樂觀鎖與悲觀鎖

慕課網:搞定計算機網路面試,看這篇就夠了(補充版)


推薦閱讀:
相关文章