文档菜单
文档首页
/
MongoDB 手册
/ / / /

$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 } } )
{
_id: ObjectId("61ba667dfe687fce2f042420"),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 }
},
{
_id: ObjectId("61ba667dfe687fce2f042421"),
item: 'bolts',
quantity: 50,
carrier: { name: 'Shipit', fee: 4 }
},
{
_id: ObjectId("61ba667dfe687fce2f042422"),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}

此查询的SQL等效语句是

SELECT * FROM INVENTORY WHERE QUANTITIY != 20

以下示例根据嵌入式文档中字段的$ne比较来设置price字段。updateMany()操作搜索具有名为fee的子字段的嵌入式文档carrier。它使用$setprice字段更新为每个文档中的9.99,其中fee字段的值不等于1fee子字段不存在

db.inventory.updateMany(
{ "carrier.fee" : { $ne: 1 } },
{ $set: { "price": 9.99 } }
)
{
_id: ObjectId("61ba66e2fe687fce2f042423"),
item: 'nuts',
quantity: 30,
carrier: { name: 'Shipit', fee: 3 },
price: 9.99
},
{
_id: ObjectId("61ba66e2fe687fce2f042424"),
item: 'bolts',
quantity: 50,
carrier: { name: 'Shipit', fee: 4 },
price: 9.99
},
{
_id: ObjectId("61ba66e2fe687fce2f042425"),
item: 'washers',
quantity: 10,
carrier: { name: 'Shipit', fee: 1 }
}

此查询的SQL等效语句是

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

不等式运算符$ne并不非常选择性强,因为它通常匹配索引的大部分内容。因此,在许多情况下,具有索引的$ne查询的性能可能不会比必须扫描集合中所有文档的$ne查询好。有关更多信息,请参阅查询选择性。

返回

$lte