Mongodb學習筆記二(Mongodb基本命令)

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   ar   使用   strong   sp   

第二章 基本命令一、Mongodb命令
說明:Mongodb命令是區分大小寫,使用的命名規則是駝峰命名法。  對於database和collection無需主動建立,在插入資料時,如果database和collection不存在則會自動建立。
常用命令

help命令
通過此命令可以看到一些最基本的命令,

 

use命令
例如命令【use demodb】,建立demodb,不用擔心demodb不會建立,當使用use demodb 命令建立第一個collection時會自動建立資料庫demodb, 

 

插入資料
使用命令【db.collectionName.insert({name:"jack",age:33})】collectionName中插入一個document,如果collectionName不存在則建立。 使用命令【db.getCollectionNames()】會得到collectionName和system.indexex。system.indexex對於每個database都有,用於記錄index。 使用命令【db.collectionName.find()】會查看到collectionName中的所有document。 命令如下:

E:\MongoDB\bin>mongoMongoDB shell version: 2.6.5connecting to: test> use demodbswitched to db demodb> db.FirstCollection.insert({name:"jack",age:22})WriteResult({ "nInserted" : 1 })> show collectionsFirstCollectionsystem.indexes   > db.getCollectionNames()[ "FirstCollection", "system.indexes" ]> db.demodb.find()> db.FirstCollection.find(){ "_id" : ObjectId("543731431dc491f307663a0d"), "name" : "jack", "age" : 22 }> db.system.indexes.find(){ "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "demodb.FirstCollection" }

 

查詢資料

參考網址:http://www.cnblogs.com/stephen-liu74/archive/2012/08/03/2553803.html

MongoDB使用find來進行查詢.查詢就是返回一個集合中文檔的子集,子集合的範圍從0個文檔到整個集合.  find的第一個參數決定了要返回哪些文檔(document的過濾條件).其形式也是一個文檔,說明要查詢的細節.空的查詢文檔{}會匹配集合的全部內容.  要是不指定查詢文檔,預設是{}.如:db.users.find()返回集合中的所有內容.  向查詢文檔中添加索引值對,就意味著添加了查詢條件.對絕大多數類型來說,整數匹配整  數,布爾類型匹配布爾類型,字串匹配字串.

先添加測試資料

db.Student.insert({name:"jack",sex:1,age:33})db.Student.insert({name:"jack",sex:1,age:33})db.Student.insert({name:"lily",sex:0,age:13})db.Student.insert({name:"kaily",sex:0,age:33})db.Student.insert({name:"tom",sex:1,age:53})

 

1、find()/findOne()條件過濾

只擷取name等於jack的Student。findOne()則只擷取第一條

> use demodbswitched to db demodb>  db.Student.find({name:"jack"}){ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }>  db.Student.findOne({name:"jack"}){"_id" : ObjectId("5437383157abafe09d99cbfc"),"name" : "jack","sex" : 1,"age" : 33}

 

2、find()/findOne()指定返回的fileds

說明:find()的第二個參數限制返回的filed的個數,0代表不返回,1代表返回。"_id"鍵總是會被返回。  如果不帶條件,只限制返回的filed個數的話,命令如下:db.Student.find({},{sex:0})。只需要第一個參數為{}空字典就可以。

 只擷取name等於jack的Student,並且filed為name,age的資料。

> db.Student.find({name:"jack"},{name:1,age:1}){ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "age" : 33 }> db.Student.find({name:"jack"},{sex:0}){ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "age" : 33 }>

 

3、查詢條件

"$lt","$lte","$gt","$gte"分別對應<,<=,>,>= 
如下代碼:
db.Student.find({age:{$gt:33}}) 查詢age大於33的 
db.Student.find({age:{$gte:33}})
db.Student.find({age:{$lt:33}})
db.Student.find({age:{$lte:33}})
db.Student.find({age:{$gt:23,$lt:43}})

> db.Student.find({age:{$gt:33}}){ "_id" : ObjectId("543738c357abafe09d99cc00"), "name" : "tom", "sex" : 1, "age" : 53 }> db.Student.find({age:{$gte:33}}){ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbff"), "name" : "kaily", "sex" : 0, "age" : 33 }{ "_id" : ObjectId("543738c357abafe09d99cc00"), "name" : "tom", "sex" : 1, "age" : 53 }> db.Student.find({age:{$lt:33}}){ "_id" : ObjectId("543738b857abafe09d99cbfe"), "name" : "lily", "sex" : 0, "age" : 13 }> db.Student.find({age:{$lte:33}}){ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfe"), "name" : "lily", "sex" : 0, "age" : 13 }{ "_id" : ObjectId("543738b857abafe09d99cbff"), "name" : "kaily", "sex" : 0, "age" : 33 }> db.Student.find({age:{$gt:23,$lt:43}}){ "_id" : ObjectId("5437383157abafe09d99cbfc"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbfd"), "name" : "jack", "sex" : 1, "age" : 33 }{ "_id" : ObjectId("543738b857abafe09d99cbff"), "name" : "kaily", "sex" : 0, "age" : 33 }  

 

$ne 代表不等於 
db.Student.find({age:{$ne:33}}) 查詢age不等於33
$in,$not和$or

db.Student.find({age:{$in:[13,53]}})db.Student.find({$or:   [    {age:{$in:[13,53]}},    {name:"kaily"}   ]})  

 

4、特殊查詢--null和exists

null可以匹配自身,而且可以匹配"不存在的"

--插入測試資料db.Student.insert({name:null,sex:1,age:18})db.Student.insert({sex:1,age:24})db.Student.find({name:null})        --上面兩條都能查到db.Student.find({name:{$in:[null],$exists:true}})  ---只能查到第一條   

5、數組資料查詢

db.Student.insert({name:"wjh",sex:1,age:18,color:["red","blue","black"]})db.Student.insert({name:"lpj",sex:1,age:22,color:["white","blue","black"]})db.Student.find()--color數組中所有包含white的文檔都會被檢索出來db.Student.find({color:"white"})--color數組中所有包含red和blue的文檔都會被檢索出來,數組中必須同時包含red和blue,但是他們的順序無關緊要。db.Student.find({color:{$all:["red","blue"]}}) --精確匹配,即被檢索出來的文檔,color值中的數組資料必須和查詢條件完全符合,即不能多,也不能少,順序也必須保持一致。db.Student.find({color:["red","blue","black"]})--匹配數組中指定下標元素的值。數組的起始下標是0。注意color要加引號。db.Student.find({"color.0":"white"}) 

6、內嵌文檔查詢

----待完成-------   

7、排序

db.Student.find().sort({age:1})db.Student.find().sort({age:1,sex:1})  --1代表升序,-1代表降序

8、分頁

db.Student.find().sort({age:1}).limit(3).skip(3) --limit代表取多少個document,skip代表跳過前多少個document。  

9、擷取數量

db.Student.count({name:null})   --或者db.Student.find({name:null}).count()

刪除資料

說明:刪除資料比較簡單。db.Student.remove({name:null})

更新資料

1.更新資料

命令【db.Student.update({name:"jack"},{age:55})】執行後  先查詢name=jack的所有document,然後將name=jack的所有document都替換為{age:55},其它filed都沒有了。  正確的更新方式應該為:db.Student.update({name:"jack"},{$set:{age:55}})  

2.增加field

--將name=lily的student增加一個filed heightdb.Student.update({name:"lily"},{$inc:{height:175}})  

3.upset-將數字field增加多少增量

--若存在則添加,否則更新,只能用於數字field,例如age更新前是50,更新了185,則變為235.db.Student.update({name:"lily"},{$inc:{age:185}},true)

4.批次更新資料

------------------待完成---------

Mongodb學習筆記二(Mongodb基本命令)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.