MongoDB入門實操《中篇》

歡迎關注【無量測試之道】公衆號,回覆【領取資源】,

Python編程學習資源乾貨、
Python+Appium框架APP的UI自動化、
Python+Selenium框架Web的UI自動化、
Python+Unittest框架API自動化、

資源和代碼 免費送啦~
文章下方有公衆號二維碼,可直接微信掃一掃關注即可。

1、常規命令使用

首先我們來了解幾個概念,雖然MongoDB入門實操《上篇》這篇文章已經提到過,這裏再次加深印象:
集合:Mongo 中的集合就是mysql 的表的表現形式
文檔:文檔的數據結構和JSON 基本一樣,它就是集合(表)中的一條記錄,相當於mysql 的行row
字段:Mongo 中的field 相當於mysql 中的column
索引:Mongo 中的index 與mysql 的index 一樣
主鍵:Mongo 中的primary key 與mysql 的一樣,其中Mongo 中將_id 自動設置爲主鍵

2、向集合中插入數據

有兩種方式,注意一下插入的數據格式 insert and save,如下:


> db.test.insert({"name":"tony","age":23,"job":"tester"})
WriteResult({ "nInserted" : 1 })
> db.test.save({"name":"tom","age":29,"job":"developer"})
WriteResult({ "nInserted" : 1 })
> db.test.find()
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 23, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }

3、刪除集合中的數據


> db.test.remove({"name":"jim"})
WriteResult({ "nRemoved" : 1 })

4、修改集合中的數據

> db.test.update({"name":"tony"},{$set:{"age":30}}) #只更新第一條記錄,name=tony 的age 修改爲30
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test.update({"name":"tony"},{$set:{"age":30}},false,true ); #滿足條件的全部更新

備註:上一條命令中false and true 解釋:

  • upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true爲插入,默認是false,不插入。

  • multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數爲true,就把按條件查出來多條記錄全部更新

5、查詢集合中的數據

> db.test.find({"age":{$gt:29}}) #查詢age 大於29的文檔
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
備註:
MongoDB中條件操作符有:
* (>) 大於 - $gt
* (<) 小於 - $lt
* (>=) 大於等於 - $gte
* (<= ) 小於等於 - $lte (大家可以多去練習)


> db.test.find({"name":{$in:["tony","tom"]}}) #類似mysql 裏面的in 操作查詢
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }


> db.test.find({"name":"tom","age":29}) #這種就是mysql 裏面的 name='tom' and age=29 
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }


> db.test.find({$or:[{"name":"tom"},{"age":33}]}) #這種就是mysql 裏面的 name='tom' or age=33
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }


$type操作符是基於集合中對應的數據類型,並返回結果。
> db.test.find() #這是現有的數據
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }
{ "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" }


> db.test.find({"age":{$type:"string"}}) #這裏要求只查詢出age 字段值是string 類型的數據
{ "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" }
> db.test.find({"age":{$type:2}}) #2 和 string 是同一種表示,兩種不同方式
{ "_id" : ObjectId("5eeccd88613abf5d90d640a3"), "name" : "jim", "age" : "39", "job" : "developer" }


> db.test.find({"age":{$type:1}}) #1 表示是數字類型,也可以用Double 來代替
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }

limit() 方法的使用,這也相當於是mysql 裏面的limit 用法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。
> db.test.find({"age":{$type:1}}).limit(1)
{ "_id" : ObjectId("5eecc55ec2e3725b5715931b"), "name" : "tony", "age" : 33, "job" : "tester" }

skip()方法可以用來跳過指定數量的數據,skip方法同樣接受一個數字參數作爲跳過的記錄條數。
> db.test.find({"age":{$type:1}}).skip(1) #跳過第一條記錄數據,默認情況下skip() 參數爲0
{ "_id" : ObjectId("5eecc5a3c2e3725b5715931c"), "name" : "tom", "age" : 29, "job" : "developer" }
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }

limit() 與 skip() 方法聯合使用:
> db.test.find({"age":{$gt:29}}).skip(1).limit(3)
{ "_id" : ObjectId("5eeccc7b613abf5d90d640a2"), "name" : "kim", "age" : 39, "job" : "developer" }
{ "_id" : ObjectId("5ef74025613abf5d90d640a4"), "name" : "jeffy", "age" : 40, "job" : "developer" }
{ "_id" : ObjectId("5ef74035613abf5d90d640a5"), "name" : "jeee", "age" : 35, "job" : "developer" }
上面這條命令的操作相當於mysql 的 select * from test where age>29 limit 1,3;

總結:今天主要分享了MongoDB 中常見的操作增、刪、改和查操作,這將有利於我們快速的進入到MongoDB 的世界中去。

備註:我的個人公衆號已正式開通,致力於測試技術的分享,包含:大數據測試、功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜索公衆號:“無量測試之道”,或掃描下方二維碼:

 添加關注,一起共同成長吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章