mongoDB 讀書筆記(初級命令)

來源:互聯網
上載者:User

標籤:

關於mongoDB的相關知識,讀書筆記,便於自己查閱用,不定期更新(純手打)        《mongoDB權威指南》

一、建立更新和刪除

  1.建立

//批量插入一個集合可以節省時間,只用一次Tcp//插入時轉成bson,並且資料不能大於4mbdb.blog.insert({"name":"RedWolf"}) //插入一個文檔 文檔有一個name鍵

var temp={"name":"Dog"} db.blog.insert(temp) //插入一個文檔 文檔有一個name鍵

      2.刪除

db.blog.remove({})             //刪除blog中的所有文檔,但不會刪除集合本身以及索引 db.blog.remove({"age":"18"})  //刪除blog中所有age為18的文檔//如果追求速度   刪除整個集合,然後再重新建立索引會比較快 相對於刪除所有文檔db.blog.drop()      //未驗證是否真的快很多

  3.更新

db.blogs.insert({"name":"joe",age:18,frineds:"tom"})//以下是更新步驟var joe=db.blogs.findOne({"name":"joe"})  //此處不可用find()  find返回的是遊標joe.relationship={"friends":"kate"}joe.age=19db.blogs.update({"name":"joe"},joe);//將修改後的文檔進行更新   如果集合中存在多個name為joe的文檔,則會嘗試更新多條,但是joe中的_id是固定的,所以會造成錯誤。更新時需注意唯一性

    3.1修改器

 一般只需修改文檔中的部分內容,此時採用修改器比較合適(原子性)

//eg1 記錄頁面被訪問次數的文檔,每當被訪問的時候加一  $inc 對之後的鍵加指定值(該值為負可實現減法)  如果鍵不存在則會添加該建共置為指定值db.web.insert({"pageName":"cnblogs","times":1})db.web.update({"pageName":"cnblogs"},{"$inc":{"times":1}})
//eg2 直接修改值        $set 會直接修改  如果修改的鍵不存在,則會添加該鍵共置為指定值db.web.update({"pageName":"cnblogs"},{"$set":{"times":88}})//eg3 修改內嵌值db.blog.update({"name":"joe"},{"$set":{"relationship.friends":"Lin"}})
//eg4 刪除指定鍵       $unset會刪除指定鍵  該例中會刪除age鍵db.blog.update({"name":"joe"},"&unset":{"age":1}) 
//對數組的操作         $push 會插入到數組的末尾db.web.insert({"name":"test","bin":[1,2,3,4,6]})db.web.update({"name":"test"},{"$push":{bin:5}})db.web.insert({"name":"try","bin":[{"id":1},{"id":2}]})db.web.update({"name":"try"},{"$push":{"bin":{"id":3}}})
//數組操作  $ne配合 $pushdb.web.insert({"name":1,"bin":[1,2,3]});db.web.insert({"name":2,"bin":[1,2,3,4]});db.web.update({"name":{"$ne":1}},{"$push":{"bin":4}})//為name為1的文檔中的bin添加4db.web.update({"bin":{"$ne":4}},{"$push":{"bin":4}}) //若bin中沒有4,則添加4
//addToSet  如果沒有則添加  取代了$ne和$push的組合db.web.update({"name":1},{"$addToSet":{"bin":20}}) //對於name為1的文檔如果bin中沒有20則添加
//$addToSet 配合 $each 添加數組中不同的內容db.web.update({"id":1},{"$addToSet":{"bin":{"$each":[1,2,3,4,5]}}})
//刪除數組中的元素    $popdb.web.update({"id":1},{"$pop":{"bin":1}})   //從數組末尾刪除一個db.web.update({"id":1},{"$pop":{"bin":-1}})   //從數組開頭刪除一個//刪除數組中的元素    $pulldb.web.update({"id":1},{"$pull":{"bin":1}})   //從數組中刪除所有為1的項
//數組的定位操作  $db.web.update({"bin":3},{"$inc":{"bin.$":3}})

 

// $upsert      有則更新,沒有則根據查詢條件和更新內容添加新文檔 update的第三個參數為true則為upsertdb.web.update({"id":3},{"$push":{"bin":8}},true)
//  $save    存在_id使調用upsert 否則調用insertvar x=db.web.findone();x.id=9db.web.save(x)
//更新匹配的多個文檔//正常情況下即使匹配多個也只更新匹配到的第一條,update的第四個參數為true則匹配多條db.web.update("id":{"$ne":100},{"&push":{"bin":100}},false,true) //為所有id不為100的文檔的bin添加100

二、查詢

//用逗號隔開為多個條件   條件1and條件2db.web.find({"id":1,"name":"blog"})
//返回指定的鍵    find函數的第二個參數指定要返回和不需要返回的鍵 1為需要返回 0為不需要返回db.web.find({"id":1},{"id":1,"_id:0"})
// $lt $lte $gt $gte 分別對應    < <=  > >=db.web.find({"age":{"$gt":10,"$lt":18}}) //尋找age在(10,18)範圍的文檔 
var date=new Datedb.web.find({"datetime":{"$gt":date}})
// $in  某個索引值匹配任意一項   $or  任意一個條件達成db.web.find({"id":{"$in":[1,2,3]}})   //尋找id為 1 2或3 的文檔db.web.find({"$or":[{"id":1},{"age":3}]})  //尋找id為1或年齡為3的文檔
// $mod取餘  $not 取反db.web.find({"id":{"not":{"$mod:[5,1]"}}})  //取id 除5後不餘1的id    如2,3,4,5,7
//Regex          /××××××××××/db.web.find({"name":/[0-9]*/})      //尋找名稱為數位文檔

 

//查詢數組   $all   db.web.find({"bin":{"$all":[1,2,3]}})    //尋找bin中包含1,2和3的文檔

 

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.