$not
On this page本页内容
Definition定义
$not-
Syntax:
{ field: { $not: { <operator-expression> } } }$notperforms a logical对指定的NOToperation 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此查询将选择inventorycollection where:inventory集合中的所有文档,其中:thepricefield value is less than or equal to1.99orprice字段值小于或等于1.99,或者thepricefield does not existprice字段不存在
{ $not: { $gt: 1.99 } }is different from the与$lteoperator.$lte运算符不同。{ $lte: 1.99 }returns only the documents where仅返回存在pricefield exists and its value is less than or equal to1.99.price字段且其值小于或等于1.99的文档。Remember that the请记住,$notoperator only affects other operators and cannot check fields and documents independently.$not运算符只影响其他运算符,不能独立检查字段和文档。So, use the因此,使用$notoperator for logical disjunctions and the$neoperator 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例如,以下查询选择inventorycollection where theitemfield value does not start with the letterp.inventory集合中item字段值不以字母p开头的所有文档。db.inventory.find( { item: { $not: /^p.*/ } } )
$regexoperator expression运算符表达式For example, the following query selects all documents in the例如,以下查询选择inventorycollection where theitemfield 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