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
posted @ 2019-06-27 08:58  言值  阅读(3497)  评论(0编辑  收藏  举报