MongoDB $ne 运算符介绍
在 MongoDB 中, $ne
运算符用于查询不等于指定值的文档。它可以用于查询文档中特定字段的非特定值,也可以用于查询嵌套文档中的非特定值。 $ne
运算符常常与其他运算符一起使用,以便更精确地查询文档。
语法
$ne
运算符的语法如下所示:
{
field: {
$ne: value
}
}
其中,field 表示要查询的字段名,value 表示要查询的值。
使用场景
$ne
运算符可以用于以下场景:
- 查询指定字段的非特定值:例如,查询所有不等于 5 的评分记录。
- 查询嵌套文档中的非特定值:例如,查询所有商品中评分不为 5 的商品。
示例
下面我们将给出两个示例,分别演示了如何使用 $ne
运算符查询不等于指定值的文档。
示例 1:查询指定字段的非特定值
假设我们有一个集合 scores,其中包含了多个学生的分数信息,包括学生姓名、课程名称、分数等。现在我们需要查询所有分数不等于 60 的记录,可以使用 $ne
运算符进行查询:
假设集合中有以下数据:
{
"_id": 1,
"name": "Alice",
"course": "Math",
"score": 75
},
{
"_id": 2,
"name": "Bob",
"course": "English",
"score": 60
},
{
"_id": 3,
"name": "Charlie",
"course": "Science",
"score": 80
},
{
"_id": 4,
"name": "David",
"course": "History",
"score": 85
}
我们可以使用以下命令来查询所有分数不等于 60 的记录:
db.scores.find({ score: { $ne: 60 } })
执行该命令后,返回的结果为:
{
"_id": 1,
"name": "Alice",
"course": "Math",
"score": 75
},
{
"_id": 3,
"name": "Charlie",
"course": "Science",
"score": 80
},
{
"_id": 4,
"name": "David",
"course": "History",
"score": 85
}
说明查询结果中只返回了分数不等于 60 的记录,即 Alice、Charlie 和 David 的记录。
示例 2:查询嵌套字段的非特定值
假设我们有一个集合 products,其中包含了多个商品的信息,包括商品编号、商品名称、商品价格等。其中,每个商品还包含了一个 reviews 数组,用于存储用户对该商品的评价信息。每个评价又包含了一个 rating 字段,用于表示该评价的评分。现在我们需要查询所有评分不为 5 的商品,可以使用 $ne
运算符进行查询。
以下是示例数据:
{
"product_id": "10001",
"product_name": "iPhone 12",
"price": 7999,
"reviews": [
{"username": "user1", "rating": 4},
{"username": "user2", "rating": 3},
{"username": "user3", "rating": 5},
{"username": "user4", "rating": 4},
]
},
{
"product_id": "10002",
"product_name": "MacBook Pro",
"price": 13999,
"reviews": [
{"username": "user1", "rating": 5},
{"username": "user2", "rating": 4},
{"username": "user3", "rating": 3},
{"username": "user4", "rating": 4},
]
},
{
"product_id": "10003",
"product_name": "AirPods",
"price": 1199,
"reviews": [
{"username": "user1", "rating": 5},
{"username": "user2", "rating": 4},
{"username": "user3", "rating": 2},
{"username": "user4", "rating": 3},
]
}
以下为查询语句:
db.products.find({ "reviews.rating": { $ne: 5 } })
以下是查询结果:
{
"product_id": "10001",
"product_name": "iPhone 12",
"price": 7999,
"reviews": [
{"username": "user1", "rating": 4},
{"username": "user2", "rating": 3},
{"username": "user4", "rating": 4},
]
},
{
"product_id": "10003",
"product_name": "AirPods",
"price": 1199,
"reviews": [
{"username": "user2", "rating": 4},
{"username": "user3", "rating": 2},
{"username": "user4", "rating": 3},
]
}
这个查询语句返回了所有评分不为 5 的商品信息。
结论
使用 $ne
运算符可以查询指定字段的非特定值,适用于需要排除特定值的查询场景。在实际应用中,可以通过结合其他查询条件进行更复杂的查询操作,如组合使用 $and
或 $or
运算符等。需要注意的是,在使用 $ne
运算符时,要注意特定值是否存在 null 值的情况,需要结合 $exists
运算符进行处理。