MongoDB 之 $ 關鍵字


高級查詢

1. 並列查詢
	db.table.find({"Field1": 1, "Field2": 2})
    
2. 或查詢

1) $or: 在不同字段或不同條件查詢時使用
    db.table.find({$or: [{"field1": 1}, {"field2": 2}]})
2) $in: 在相同字段或條件查詢時使用
    db.table.find({"age": {$in: [18, 20, 22]}})
    
3. Array查詢

1) db.table.find({"Field": 1})

2) $all: 子集查詢
    db.table.find({list: {$all: [2,4,6,8]}})
    
4. Object查詢
	db.table.find({"class.name": "python"})

比較運算型

1. $gt(大於) / $gte(大於等於)
	db.table.find({"score": {$gt: 80}})
    
2. $lt(小於) / $lte(小於等於)
	db.table.find({"score": {$lt: 80}})
    
3. $eq(等於) / $ne(不等於)

update修改器

1. $inc: 引用增加
    db.table.updateMany({}, {$inc:{"score": 1}})   # 在原基礎上給所有score +1

2. $set: 修改數據 (key不存在就添加)
    db.table.update({"score": 65}, {$set: {"score": 80}})

3. $unset: 強制刪除Field
    db.table.update({}, {$unset:{"age": 15}})    # 刪除所有 age 字段
    
4. Array操作

1) $push: 增加操作 (前提: 增加的字段 key: value 中 value 類型為 Array)
    db.table.updateOne({"age":18}, {$push: {"num": 1}}) 
    db.table.updateOne({"age":18}, {$pushAll: {"num": 2, 3, 4}})
    
2) $pull: 指定刪除Array中的某一個元素
    db.table.updateOne({"age":18}, {$pull: {"num": 1}}) 
    db.table.updateOne({"age":18}, {$pullAll: {"num": 2, 3}})
    
   $pop: 刪除Array中第一個(-1) 或 最后一個(1)元素
    db.stu.updateOne({name:"ran"},{$pop: {"num": 1}})   # 刪除最后一個元素
    db.stu.updateOne({name:"ran"},{$pop: {"num": -1}})  # 刪除第一個元素
    
   注意: 只要滿足條件,就會將Array中所有滿足條件的數據全部清除掉
    
3) $set / $inc (更新元素)
	db.table.updateOne({name:"ran", "num": 2},{$set: {"num.$":"燃"}})
    db.table.updateOne({age:18,"c.name":"python"}, {$inc:{"c.$.score": 10}})
    
5. Object操作
	db.table.updateOne({name:"ran"},{$set: {"class.name": "python"}})
    db.table.updateOne({name:"ran"},{$unset: {"class.classtype": "python"}})

"$" 關鍵字

1. "$" 在 update 中加上關鍵字就是修改器

2. 單獨出現的 "$" 字符為代指符

示例: {"_id": 123, "name": "jack", "score": 100 "num: [1,2,3,5,9,2]}
     修改 num 中的 2 為 9
     db.table.update({"score": 100, "num": 2}, {$set: {"num.$": 9}})
     
解釋:
     "$" 字符代表了符合條件元素的下標, 位置
     使用 update, 滿足條件的數據下標位置就會傳遞給 "$" 字符, 相當於對這個位置的元素進行更新操作
     首先會尋找示例 Array 中的第一個 2, 再次操作會找下一個 2 .

MongoDB 之特殊關鍵字

1. limit: 選取
    db.table.find().limit(2)   # 從整張表中的第一條 Document 開始選取兩條
    
2. skip: 跳過
    db.table.find().skip(2)    # 從整張表中的第一條 Document 開始計算, 往后跳兩條.
    
3. limit + skip
	db.table.find().skip(1).limit(2)  # 只查看第2、3條數據
    
4. sort: 排序 升序 (1), 降序(-1)
    db.table.find.sort({"price": 1})
    
5. 執行優先級
	sort > skip > limit


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM