MongoDB: CURD操作

來源:互聯網
上載者:User

標籤:

>> 建立:
·db.foo.insert({"bar":"baz"}) //如果文檔中沒有"_id"鍵會自動增加一個
·db.foo.batchInsert([{"_id":0},{"_id":2}])
 //只適用將多個文檔插入到一個集合,不能單次請求中多個文檔批量插入多個集合中
 // 當前Mongo能接收最大的訊息長度是48M
 
# 插入校正
·每個文檔必須小於16M (Object.bsonsize(doc)查看bson大小)
 
>> 刪除:
·db.foo.remove()//刪除所有集合中的文檔,但是不刪除集合本身
·db.foo.remove({"opt":true})
·db.foo.drop()//刪除整個集合(慎用)

>> 更新:
# 基本更新:
·db.foo.update() //更新的過程中必須保證同一個文檔鍵不能重複

# 修改器:
·db.foo.update({"game":"game"},{"$inc":{"score":1000}}) //$inc 是對某個欄位的值進行增加和減少操作,適用於數實值型別
·db.foo.update({"_id":1},{"$set":{"fav":"fav"}}) //修改非數實值型別的欄位的值
·db.foo.update({"_id":1},{"$unset":{"fav":1}}) //刪除這個鍵
+ 數組修改器:

+ 添加元素:
·db.foo.update({"title":"blog"},{"$push":{"comments":"comments"}}) //在文檔中添加一個元素
·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5]}})//添加多個值
·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5],"$slice":-10}})
 //設定添加元素的數量,"$slice"值為負整數
·db.foo.update({"title":"blog"},{"$push":{"comments":{"$each":[1,3,5],"$slice":-10,"$sort":{"rating":-1}}})
//"$slice","$sort"與"$push"配合使用,必須使用"$each"

# 數組操作:
·db.papers.update({{"authors":{"$ne":"richie"}},{"$push":{"authors":richie}}}) //$ne先查詢數組中是否存在這個元素
·db.users.update({"_id":1},{"$addToSet":{"emails":"[email protected]"}}) //避免插入重複的值
·db.users.update({"_id":1},{"$addToSet":{"emails":{"$each":["[email protected]","[email protected]"]}}})

·db.blog.update({"post":post_id},{"$inc":{"comments.0.votes":1}})//基於數組的下標位置修改
·db.blog.update({"commetns.author":"john"},{"$set":{"comments.$.author":"jim"}})

# 刪除元素:
·db.lists.update{{},{"$pull":{"todo":"laundry"}}} //指定條件刪除某個元素,會將所有匹配的值刪除
·{"$pop":{"key":1}}//從數組末尾刪除
·{"$pop":{"key":-1}} //從數組頭部刪除

>> 特殊更新:
·db.blog.update({"url":"/blog"},{"$inc":{"pageviews":1},true})//true如果沒有找到更新條件的文檔則建立
·db.users.update({},{"$setOnInsert":{"createdAt":new Date()},true}) //建立時賦值,之後所有的更新操作都不會改變

# save(doc)函數:如果文檔存在就更新文檔,如果不存在就建立

>> 更新多個文檔:??
·findAndModify

=> 寫入安全:


>> 查詢
# 基本查詢:
·db.users.find({},{"username":1,"email":1,"_id": 0}) //指定某個欄位顯示

# 帶條件的查詢:
內層文檔:"$lt"、"lte"、"$gt"、"gte" 對應<,<= ,> ,>=
外層文檔:"$and","$or","$nor"
·db.users.find({"registered":{"$lt":start}})
·db.users.find({"username":{"$ne":"joe"}}) 查詢所有名字不為joe的使用者

·db.raffle.find({"ticket":{"$in":[1,2,3]}}) //一個鍵與多個值匹配
·db.raffle.find({"$or":[{"ticket":{"$in":[1,3,5]}},{"winner":true}]}) //or查詢

·db.users.find({"id_num":{"$mod":[5,1]}})
·db.users.find({"id_num":{"$not":{"$mod":[5,1]}}})

=> 一個鍵可以任意組合多個條件,但是一個鍵不能對應多個更新修改器

# 特定類型查詢:
·db.c.find({"z":{"$in":[null],"$exists":true}}) //null查詢
·db.users.find({"name":/joe/i})//Regex查詢

# 數組查詢:
·db.food.find({"friut":{$all:["apple","banana"]}})
·精確匹配對於數組依賴順序


MongoDB: CURD操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.