MongoDB中“$”操作符表达式汇总

MongoDB中“$”操作表达式汇总 查询 比较操作 $eq

语法:{ : { $eq: } }

释义:匹配等于(=)指定值的文档

举例:

查询age = 20的文档: db.person.find( { age: { $eq: 20 } } ) 相当于: db.person.find( { age: 20 } ) $gt

语法:{: {$gt: } }

释义:匹配大于(>)指定值的文档

查询age > 20的文档 db.person.find({ age: { $gt: 20 } }) $gte

语法:{field: {$gte: value} }

释义:匹配大于等于(>=)指定值的文档

查询age >= 20的文档 db.person.find({ age: { $gte: 20 } }) $lt

语法:{field: {$lt: value} }

释义:匹配小于(<)指定值的文档

查询age < 20的文档 db.person.find({ age: { $lt: 20 } }) $lte

语法:{ field: { $lte: value} }

释义:匹配小于等于(<=)指定值的文档

查询age <= 20的文档 db.person.find({ age: { $lte: 20 } }) $ne

语法:{field: {$ne: value} }

释义:匹配不等于(≠)指定值的文档

查询age ≠ 20的文档 db.person.find({ age: { $ne: 20 } }) $in

语法:{ field: { $in: [, , ... ] } }

释义:匹配数组中的任一值

举例:

查询该集合中字段qty的值与数组中的任意值相等的文档: db.inventory.find( { qty: { $in: [ 5, 15 ] } } ) $nin

语法:{ field: { $nin: [ , ... ]} }

释义:不匹配数组中的值

逻辑操作 $or

语法:{ $or: [ { }, { }, ... , { } ] }

释义:或 条件查询

举例:

查询age < 20或者address是beijing的文档: db.person.find( { $or: [ { age: { $lt: 20 } }, { address: "beijing" } ] } ) $and

语法:{ $and: [ { }, { } , ... , { } ] }

释义:与 条件查询

$not

语法:{ field: { $not: { } } }

释义:查询与表达式不匹配的文档

举例:

查询age不大于20的文档: db.person.find( { age: { $not: { $gt: 20 } } } ) $nor

语法:{ $nor: [ { }, { }, ... { } ] }

释义:查询与任一表达式都不匹配的文档

举例:

查询age既不等于20,sex也不是男的文档: db.person.find( { $nor: [ { age: 20 },{ sex: "男"} ] } ) 集合字段操作 ——“存在”、“类型” $exists

语法:{ field: { $exists: } }

释义:查询存在指定字段的文档

举例:

查询存在phone字段的文档: db.person.find( { phone: { $exists: true } } ) $type

语法:{ field: { $type: | } }

释义:查询类型为指定类型的文档,3.2版本添加alias别名,各种类型的Number及Alias如下

img

举例:

假设存在这样一个集合:

{ "_id": 1, address: "2030 Martian Way",zipCode: "90698345"}, { "_id": 2, address: "156 Lunar Place",zipCode: 43339374}, { "_id": 3, address: "2324 Pluto Place",zipCode: NumberLong(3921412)}, { "_id": 4, address: "55 Saturn Ring", zipCode: NumberInt(88602117)}

查询该集合中zipCode字段的数据类型为String类型的文档:

db.addressBook.find( { "zipCode" : { $type : 2 } } ); db.addressBook.find( { "zipCode" : { $type : "string" } } ); 运算操作 $mod

语法:{ field: { $mod: [ 除数, 余数 ] } }

释义:取余条件查询

举例:

查询age字段的值除以2余0的文档: db.person.find( { age: { $mod: [ 2, 0 ] } } ) $regex

语法:

{ : { $regex: /pattern/, $options: '' } }

{ : { $regex: 'pattern', $options: '' } }

{ : { $regex: /pattern/ } }

释义:正则表达式查询

举例:

db.products.find( { sku: { $regex: /^ABC/i } } ) $text

语法:

{ $text: { $search: <string>, $language: <string>, $caseSensitive: <boolean>, $diacriticSensitive: <boolean> } }

$search ——关键词

$language ——语言,不支持中文!!!支持语言如下:

$caseSensitive——是否区分大小写,默认false

$diacriticSensitive——是否区分读音,默认false

释义:文本索引查询

举例:较为复杂,请参考官网

$where

释义:把一个含有JavaScript表达式的字符串或者是整个JavaScript函数转换到查询系统中,对内嵌文档不起作用

举例:

db.myCollection.find( { $where: "this.credits == this.debits" } ); db.myCollection.find( { $where: function() { return obj.credits == obj.debits; } } ); 数组操作 $all

语法:{ < field >: { $ all : [ < value1 > , < value2 > ... ] } }

释义:匹配文档的数组字段中包含所有指定元素的文档

举例:

查询articles集合中tags字段(是个数组)包含“ssl”和“security”的文档(包含,但并不是全部等于) db.articles.find( { tags: { $all: [ [ "ssl", "security" ] ] } } ) $elemMatch(query)重要

语法:{ : { $elemMatch: { , , ... } } }

释义:匹配内嵌文档或数组中的部分field

举例:

假设现有集合:

{ _id: 1, results: [ 82, 85, 88 ] } { _id: 2, results: [ 75, 88, 89 ] }

查询results数组中含有区间[80,85)元素的文档(结果为第一条):

db.scores.find( { results: { $elemMatch: { $gte: 80, $lt: 85 } } }) $size

语法:{ field: { $size: }

释义:匹配数组长度为指定大小的文档

举例:

查询已经集齐了5张福卡的文档: db.person.find({card:{$size:5}}) 查询相似document操作 $(projection)

释义:查询数组中首个匹配条件的元素

举例:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxzpj.html