Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$ne

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 举例
  • 匹配不相等的文档字段
  • 基于不相等嵌入式文档字段的更新
  • 了解详情
$ne

$ne 选择指定字段的值不等于指定值的文档。这包括不包含指定字段的文档。

关于不同 BSON 类型值的比较,请参阅指定的 BSON 比较顺序。

可以使用 $ne 查找托管在以下环境中的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

$ne 操作符采用以下形式:

{ field: { $ne: value } }

注意

如果$ne操作符的值为 null,请参阅非相等筛选器以了解更多信息。

以下示例使用inventory集合。要创建集合,请在 mongosh 中运行以下insertMany()命令

db.inventory.insertMany( [
{
"item": "nuts", "quantity": 30,
"carrier": { "name": "Shipit", "fee": 3 }
},
{
"item": "bolts", "quantity": 50,
"carrier": { "name": "Shipit", "fee": 4 }
},
{
"item": "washers", "quantity": 10,
"carrier": { "name": "Shipit", "fee": 1 }
}
] )

选择 inventory 集合中 quantity 不等于 20 的所有文档:该查询还会选择没有 quantity 字段的文档:

db.inventory.find( { quantity: { $ne: 20 } } )

与该查询等效的 SQL 是:

SELECT * FROM INVENTORY WHERE QUANTITIY != 20

以下示例根据与嵌入式文档中的字段进行的 $ne 比较设置 price 字段。updateMany() 操作搜索 carrier 嵌入式文档,其中包含一个名为 fee 的子字段。该操作使用 $setfee 值不等于 1fee 子字段不存在的每个文档中的 price 字段更新为 9.99

db.inventory.updateMany(
{ "carrier.fee" : { $ne: 1 } },
{ $set: { "price": 9.99 } }
)

与该查询等效的 SQL 是:

UPDATE INVENTORY SET PRICE = '9.99' WHERE carrierfee != 1

一般不会 选择不等于操作符 $ne,因为它通常匹配索引的大部分内容。因此,在很多情况下,具有索引的 $ne 查询的性能可能并不比必须扫描集合中的所有文档的 $ne 查询好。另请参阅查询选择性

← $lte
$nin →