MongoDB,查询出一个集合中的字段是否在另个集合中存在
时间: 2024-03-06 20:50:00 浏览: 171
判断一个字符串是不是出现在另一个字符串中
4星 · 用户满意度95%
在 MongoDB 中可以使用 $lookup 和 $match 聚合管道操作符来查询一个集合中的字段是否在另个集合中存在。具体操作如下:
假设有两个集合,一个是 orders,一个是 customers,orders 集合中有一个字段 customerId,表示订单所属的客户,customers 集合中有一个字段 customerId,表示客户的 ID,现在要查询 orders 集合中 customerId 字段是否在 customers 集合中出现过。可以使用以下查询语句:
```
db.orders.aggregate([
{
$lookup: {
from: "customers",
localField: "customerId",
foreignField: "customerId",
as: "customer"
}
},
{
$match: {
customer: {$ne: []}
}
}
])
```
上述查询语句中,第一个聚合管道操作符 $lookup 用于在另一个集合中查找匹配的文档,将匹配的文档合并到查询的文档中,这里将 customers 集合和 orders 集合进行关联,以 customerId 字段作为关联字段。第二个聚合管道操作符 $match 用于过滤掉没有匹配到数据的文档。如果 orders 集合中的某个文档的 customerId 字段在 customers 集合中出现过,则该文档的 customer 字段值为匹配的文档,否则该文档的 customer 字段值为 []。因此,可以使用 $ne 操作符过滤掉 customer 字段值为 [] 的文档,从而查询 orders 集合中 customerId 字段是否在 customers 集合中出现过。
阅读全文