九、mongodb之评估查询运算符

#                             评估查询运算符

运算符含义
$expr允许在查询语言中使用聚合表达式
$jsonSchema根据给定的JSON模式验证文档,限定数据类型。
$mod对字段的值执行模运算,并选择具有指定结果的文档。
$regex选择值与指定正则表达式匹配的文档
$text执行文本搜索
$where匹配满足JavaScript表达式的文档。

现有数据:

{ "_id" : 1, "category" : "food", "budget": 400, "spent": 450 }
{ "_id" : 2, "category" : "drinks", "budget": 100, "spent": 150 }
{ "_id" : 3, "category" : "clothes", "budget": 100, "spent": 50 }
{ "_id" : 4, "category" : "misc", "budget": 500, "spent": 300 }
{ "_id" : 5, "category" : "travel", "budget": 200, "spent": 650 }

###1、$expr运算符

使用$expr运算符联合多个运算,选出budget值大于spent值的数据

db.monthlyBudget.find( { $expr: { $gt: [ "$spent" , "$budget" ] } } )

###2、$jsonSchema运算符

db.createCollection("students", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: [ "name", "year", "major", "gpa" ],
         properties: {
            name: {
               bsonType: "string",
               description: "must be a string and is required"
            },
            gender: {
               bsonType: "string",
               description: "must be a string and is not required"
            },
            year: {
               bsonType: "int",
               minimum: 2017,
               maximum: 3017,
               exclusiveMaximum: false,
               description: "must be an integer in [ 2017, 3017 ] and is required"
            },
            major: {
               enum: [ "Math", "English", "Computer Science", "History", null ],
               description: "can only be one of the enum values and is required"
            },
            gpa: {
               bsonType: [ "double" ],
               description: "must be a double and is required"
            }
         }
      }
   }
})

###3、$mod运算符

取出qty的值,对4取余等于0的数据:

db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )

###4、$regex运算符

SELECT * FROM products WHERE sku like "%789";
db.products.find( { sku: { $regex: /789$/ } } )

匹配S开头,或者含有换行符的Bson
db.products.find( { description: { $regex: /^S/, $options: 'm' } } )
Option ===== Description

参数 i ====== 加了这个参数,表示不区分大小写

参数 m ===== 个人理解这个参数是用来匹配value中有换行符(\n)的情形。 

参数 s ===== 允许点字符(.)匹配所有的字符,包括换行符。

参数 x ====== 官网的大意是忽视空白字符。

###5、$text 运算符

匹配文本中含有coffee的BSON

db.articles.find( { $text: { $search: "coffee" } } )

###6、$where运算符


匹配name的值经过md5函数加密后匹配:

db.foo.find( { $where: function() {
   return (hex_md5(this.name) == "9b53e667f30cd329dca1ec9e6a83e994")
} } );
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值