mongoDB基礎(chǔ)
基礎(chǔ)CRUD
Update
-
insert
_id是每條記錄的必填字段,不一定是ObjectId類(lèi)型铣墨。默認(rèn)使用ObjectId類(lèi)型以確保_id不重復(fù)
db.name.insert({}) db.name.insert([{},{}])
-
db.name.insert([{},{}], "ordered":false)
- ordered=true 一條記錄插入失敗沙峻,后面的記錄不會(huì)插入
- ordered=false 一條記錄插入失敗后刁卜,后面的插入操作還會(huì)繼續(xù)
-
update
-
db.Name.updateMany({"city":"HUDSON"}, {"$inc": {"pop": 10}})
set $push(string, number, boolean)
-
$push
- array追加元素
- 將字段轉(zhuǎn)化為array
all operators:https://docs.mongodb.com/manual/reference/operator/update/#id1
db.Name.updateOne()
-
-
delete
- db.Name.deleteOne() db.Name.deleteMany()
- db.name.drop() 刪除collection
- 刪除一個(gè)database下的所有collection時(shí),也會(huì)刪掉database
-
upsert
- 默認(rèn)為false
- db.name.updateMany({"field":value}, {"$set":{"field2":value2}}, {"upsert":true})
Find
db.FindOne() db.FindOne({})
-
comparison operators
- ne lt lte $regex
-
logic operators
or not
nor":[{"field1:1"}, {"field2":2}])
-
$not : negate the query requirement 后面只跟一個(gè)匹配條件
- db.name.find({"field1":{"$not":{"eq":"123"}}}) 正確
- db.name.find({"$not":{"field1":"123"}}) 錯(cuò)誤
-
expression operators
-
$expr
- 作用:在同一個(gè)文檔內(nèi)做比較
-
-
projection
- 指定返回的結(jié)果包含哪些字段骇笔,不包含哪些字段
- db.name.find({"field":value}, {"filed2":1})
- projection中只能使用全0或全1,除非想返回某些字段但不想返回_id
-
$elemMatch
- 數(shù)組中元素匹配
-
dot notation
- db.name.find("field1.field2":value)
- db.name.find({"array1.0.field1":value})
-
sort & limit
-
db.name.find().sort({"field":1}).limit(1)
- sort({"pop":1}) 升序
- sort({"pop":-1}) 降序
-
-
index
-
createIndex{"field":1}
- 1表示升序嚣崭,-1表示降序
-
import/export
- mongodump
mongoexport
mongorestore
mongoimport
aggregation framework
-
db.name.aggregate
- aggregate中的語(yǔ)句會(huì)順序執(zhí)行 pipeline
stages:group $project
concept
$
代表操作符
-
代表取字段的值
- {"eq"["end station id"]:}}
syntax
-
MQL syntax
- {"field":{operator:value}}
-
aggregation syntax
- {operator:{"field":value}}
cursor method
- pretty() count() sort() limit()
- cursor.limit().sort() means cursor.sort().limit()
- 排序時(shí)笨触,null值被認(rèn)為是最小值
ACID
concern
-
write conern
- one(數(shù)據(jù)被寫(xiě)入1臺(tái)server)
- majority
-
read concern
- local (default)
- majority
-
read preference(從哪里讀)
- primary
- nearest
- certain node
model methodology
- workload description 列出可能的查詢(xún),每個(gè)查詢(xún)的速度要求
- decide relationship: embedding/reference
- schema design patterns 選擇模型的設(shè)計(jì)模式
validation
- 子主題 1
atlas界面操作
在文檔中插入記錄
其他備注
密碼:m001-mongodb-basics
cases
example1
- {"amenities":["shampoo"]} 查找字段是array且只包含"shampoo"的記錄
- {"amenities":["shampoo", "wifi"]} 查找的結(jié)果與數(shù)組中元素的順序有關(guān)
- {"amenities":{"$all":["shampoo", "wifi"]}} 查找字段是數(shù)組且至少包含shampoo和wifi的記錄有鹿,不管元素的排序
- {"amenities":{"$size":20}} 指定數(shù)組的長(zhǎng)度
example2
- db.name.aggregate([{"group":{"_id":"sum":1}}}])
- db.name.aggregate([{"group":{"_id":"sum":"$price"}}}])
XMind - Trial Version