根据MongoDB中第一个过滤器输出的输入过滤两次



给定如下的集合,当输入为"Ross"时,我想要所有邮政编码与Ross匹配的记录。

输入的不是邮编而是姓名。

[
{
name : "Ross",
zipcode : "12345" 
},
{
name : "joey",
zipcode : "12345" 
},
{
name : "chandler",
zipcode : "22457" 
},
{
name : "monica",
zipcode : "22457" 
},
{
name : "phoebe",
zipcode : "32457" 
},
{
name : "rachel",
zipcode : "32457" 
}
]

在本例中,当我得到"Ross"作为输入,输出应该是

[
{
name : "Ross",
zipcode : "12345" 
},
{
name : "joey",
zipcode : "12345" 
}
]

我已经尝试过查看mongo-aggregation,但是我没有遇到一个满足我用例的解决方案。

请告诉我正确的方向。

你可以试试这个:

db.collection.aggregate([
{
$lookup: {
from: "collection",
localField: "zipcode",
foreignField: "zipcode",
as: "zipcodes"
}
},
{
$match: {
$or: [
{ name: "Ross" },
{ "zipcodes.name": "Ross" },
]
}
},
{ $unset: "zipcodes" }
])

Mongo操场

最新更新