Ihre Datenstruktur ist umständlich abzufragen, da Sie über ein Array eingebetteter Dokumente verfügen. Durch eine geringfügige Änderung der Daten könnten Sie die Arbeit damit vereinfachen.
Ich habe die Benutzer-IDs in ein Array eingefügt:
{
"contestname": "Contest1",
"description": "java programming contest",
"numteams": 2,
"teams": [
{
"teamname": "superstars",
"members": [
"50247314f501384b011019bc",
"50293cf9f50138446411001c",
"50293cdff501384464110018"
]
},
{
"teamname": "faculty",
"members": [
"50247314f501384b0110100c",
"50293cf9f50138446410001b",
"50293cdff501384464000019"
]
}
],
"term": "Fall 2012"
}
Sie könnten dann das PHP-Äquivalent find() ausführen für:
db.contest.find(
{'teams.members':'50247314f501384b011019bc'},
{'contestname':1, 'description':1}
)
Welche würde die übereinstimmenden Wettbewerbe zurückgeben, an denen dieser Benutzer teilgenommen hat:
{
"_id" : ObjectId("502c108dcbfbffa8b2ead5d2"),
"contestname" : "Contest1",
"description" : "java programming contest"
}
{
"_id" : ObjectId("502c10a1cbfbffa8b2ead5d4"),
"contestname" : "Contest3",
"description" : "Grovy programming contest"
}