MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb php - come eseguire una query simile a INNER JOIN

MongoDB non supporta i join. Se vuoi mappare gli utenti alle notizie, puoi fare quanto segue

1) Fallo a livello di applicazione. Ottieni l'elenco degli utenti e ottieni l'elenco delle notizie e mappale nella tua applicazione. Questo metodo è molto costoso se ne hai bisogno spesso.

2) Se è necessario eseguire spesso il passaggio precedente, è necessario riprogettare lo schema in modo che gli articoli di notizie vengano archiviati come documenti incorporati insieme ai documenti dell'utente.

    {
      "_id": "4ca30373fd0e910ecc000007",
      "login": "user22",
      "pass": "example_pass",
      "date": "2010-09-29"
      "news" : [{  
                   "name": "news 222",
                   "content": "news content 2222",
                   "date": "2010-09-29" 
                }, 
                {
                   "name": "news 222",
                   "content": "news content 2222",
                   "date": "2010-09-29"
                }]
    }

Una volta che hai i tuoi dati in questo formato, la query che stai tentando di eseguire è implicita. Una cosa da notare, tuttavia, è che le query di analisi diventano difficili su uno schema del genere. Dovrai utilizzare MapReduce per ottenere gli articoli di notizie aggiunti più di recente e simili query.

Alla fine, la progettazione dello schema e la quantità di denormalizzazione che la tua applicazione può gestire dipende dal tipo di query che ti aspetti che l'applicazione esegua.

Potresti trovare utili questi link.http://www.mongodb.org/display/DOCS/Schema+Designhttp://www.blip.tv/file/3704083

Spero di essere stato utile.