$not
On this page本页内容
Definition定义
$not
-
Syntax:
{ field: { $not: { <operator-expression> } } }
$not
performs a logical对指定的NOT
operation on the specified<operator-expression>
and selects the documents that do not match the<operator-expression>
.<operator-expression>
执行逻辑NOT
运算,并选择与<operator-expression>
不匹配的文档。This includes documents that do not contain the这包括不包含该field
.field
的文档。Consider the following query:请考虑以下查询:db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
This query will select all documents in the此查询将选择inventory
collection where:inventory
集合中的所有文档,其中:theprice
field value is less than or equal to1.99
orprice
字段值小于或等于1.99
,或者theprice
field does not existprice
字段不存在
{ $not: { $gt: 1.99 } }
is different from the与$lte
operator.$lte
运算符不同。{ $lte: 1.99 }
returns only the documents where仅返回存在price
field exists and its value is less than or equal to1.99
.price
字段且其值小于或等于1.99
的文档。Remember that the请记住,$not
operator only affects other operators and cannot check fields and documents independently.$not
运算符只影响其他运算符,不能独立检查字段和文档。So, use the因此,使用$not
operator for logical disjunctions and the$ne
operator to test the contents of fields directly.$not
运算符进行逻辑析取,使用$ne
运算符直接测试字段的内容。
Behavior行为
$not
and Data Types和数据类型
The operation of the $not
operator is consistent with the behavior of other operators but may yield unexpected results with some data types like arrays.$not
运算符的操作与其他运算符的行为一致,但对于某些数据类型(如数组)可能会产生意外结果。
$not
and Regular Expressions和正则表达式
$not
operator can perform logical 运算符可以对以下项执行逻辑NOT
operation on:NOT
操作:
Regular expression objects (i.e.正则表达式对象(即/pattern/
)/pattern/
)For example, the following query selects all documents in the例如,以下查询选择inventory
collection where theitem
field value does not start with the letterp
.inventory
集合中item
字段值不以字母p
开头的所有文档。db.inventory.find( { item: { $not: /^p.*/ } } )
$regex
operator expression运算符表达式For example, the following query selects all documents in the例如,以下查询选择inventory
collection where theitem
field value does not start with the letterp
.inventory
集合中物料字段值不以字母p
开头的所有文档。db.inventory.find( { item: { $not: { $regex: "^p.*" } } } )
db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } )driver language's regular expression objects驱动程序语言的正则表达式对象For example, the following PyMongo例如,以下PyMongoquery uses Python's
re.compile()
method to compile a regular expression:查询使用Python的
re.compile()
方法编译正则表达式:import re
for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ):
print noMatch