您好我有以下数据结构:
[
{
"name": "a name",
"project": [
{
companyName: "a name",
contactPerson: [
{
work_email: "[email protected]"
}
]
},
{
companyName: "a name1",
contactPerson: [
{
work_email: "[email protected]"
}
]
},
{
companyName: "a name2",
contactPerson: [
{
work_email: "[email protected]"
}
]
},
{
companyName: "a name3",
contactPerson: [
{
work_email: "[email protected]"
}
]
},
]
}
]
通过此查询,我想找到所有带有电子邮件[email protected]的项目:
db.collection.find({
"project.contactPerson.work_email": "[email protected]"
},
{
"project.$": 1
})
它仅返回找到的第一个结果,然后停止。但是在我的数据中,我有两个带有该电子邮件的项目,我想找到两个项目。如果可以的话,这是一个游乐场,您可以用来进一步帮助我。在此先感谢并非常感谢:https : //mongoplayground.net/p/4Mpp7kHi98u
位置$运算符限制an的内容返回:
您可以执行以下操作,
[
{
"$unwind": "$project"
},
{
$addFields: {
"project.contactPerson": {
$filter: {
input: "$project.contactPerson",
cond: {
$eq: [
"$$this.work_email",
"[email protected]"
]
}
}
}
}
},
{
$match: {
$expr: {
$ne: [
"$project.contactPerson",
[]
]
}
}
},
{
$group: {
_id: "$_id",
name: {
$first: "$name"
},
project: {
"$addToSet": "$project"
}
}
}
]
工作蒙戈游乐场
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句