sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man hittar ett dokument efter inbäddat objekt i MongoDB PHP

Din datastruktur är besvärlig att fråga eftersom du har en mängd inbäddade dokument. Med en liten förändring av data kan du göra detta lättare att arbeta med.

Jag har lagt in användar-ID:n i en array:

{
 "contestname": "Contest1",  
 "description": "java programming contest", 
 "numteams": 2,
 "teams": [
   {
    "teamname": "superstars",
    "members": [
        "50247314f501384b011019bc",
        "50293cf9f50138446411001c",
        "50293cdff501384464110018"
    ]
   },

   {
    "teamname": "faculty",
    "members": [
        "50247314f501384b0110100c",
        "50293cf9f50138446410001b",
        "50293cdff501384464000019"
    ]
   }
 ],
 "term": "Fall 2012"
}

Du kan sedan göra PHP-motsvarigheten find() för:

db.contest.find(
        {'teams.members':'50247314f501384b011019bc'},
        {'contestname':1, 'description':1}
    )

Vilket skulle returnera matchande tävlingar som denna användare hade deltagit i:

{
    "_id" : ObjectId("502c108dcbfbffa8b2ead5d2"),
    "contestname" : "Contest1",
    "description" : "java programming contest"
}
{
    "_id" : ObjectId("502c10a1cbfbffa8b2ead5d4"),
    "contestname" : "Contest3",
    "description" : "Grovy programming contest"
}



  1. kan inte döda redis-server på linux

  2. textindex krävs för $text-fråga

  3. Visa all data som kommer från mongodb och rendera den i doT.js mallmotor

  4. MongoDB i PHP som använder aggregat för att gruppera efter _id fungerar inte null