{
"id" : "Sir3GHMQ",
"name" : "Medavakkam",
"userList" : [
{
"loginName" : "[email protected]",
"role" : "ADMIN"
},
{
"loginName" : "[email protected]",
"role" : "Operator"
}
]
}
{
"id" : "Sir3GHER",
"name" : "Medavakkam",
"userList" : [
{
"loginName" : "[email protected]",
"role" : "OPERATOR"
},
{
"loginName" : [email protected]",
"role" : "OPERATOR"
}
]
}
In der Sammlung muss ich Dokumente abrufen, wo userList. loginame="[email protected]"
auch überprüfen, wo Rolle "admin" ist. Wo Rolle ist admin bedeutet, alle Benutzerliste: LoginName mit ihrer Rolle abzurufen, sonst nur Benutzerliste abrufen: LoginName mit ihrer Rolle, was immer es ist.Verschachteltes Array Dokument
Ich versuchte dies:
db.Site.aggregate([
{ "$match": { "userList.loginName": "[email protected]" } },
{ "$redact": {
"$cond": [
{ "$eq": [
{ "$ifNull" [ "$loginName", "[email protected]" ] },
"[email protected]"
] },
"$$DESCEND",
"$$PRUNE"
]
} }
])
i Ausgang benötigen wie dieses
{
"id" : "Sir3GHMQ",
"name" : "Medavakkam",
"userList" : [
{
"loginName" : "[email protected]",
"role" : "ADMIN"
},
{
"loginName" : "[email protected]",
"role" : "Operator"
}
]
}
{
"id" : "Sir3GHER",
"name" : "Medavakkam",
"userList" : [
{
"loginName" : "[email protected]",
"role" : "OPERATOR"
}
]
}
Sie müssen also mit 'loginName' alle Dokumente finden, wie' venkat @ gmail.com'? Warum nicht versuchen, 'db.Site.find ({" userList.loginName ":" [email protected] "})' '? – Veeram
yes.loginName als [email protected] – venkat