给定如下的集合,当输入为"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操场