MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So finden Sie ein Dokument nach eingebettetem Element in MongoDB PHP

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"
}