2012-06-24 5 views
0

J'ai deux collections en Mongo. Tout d'abord, les données réelles:Obtenir la clé de la carte et récupérer des données avec elle en une seule requête

{ "_id" : "internal_key1", "data" : "some data1" } 
{ "_id" : "internal_key2", "data" : "some data2" } 
{ "_id" : "internal_key3", "data" : "some data3" } 

Un autre est une carte de clés prévue à mes clés internes par un service externe:

{ "_id" : "ext_key111", "internal" : "internal_key1" } 
{ "_id" : "ext_key222", "internal" : "internal_key2" } 
{ "_id" : "ext_key333", "internal" : "internal_key3" } 

Si je ne dispose que clé externe, puis-je récupérer en quelque sorte données (par exemple, donné "ext_key111" récupérer "some data1") avec une seule requête? Sans compter les trucs éval, bien sûr.

+1

double possible de [Comment puis-je effectuer le SQL JOIN équivalent à MongoDB?] (Http://stackoverflow.com/questions/2350495/how-do-i-perform-the-sql-join-equivalent -in-mongodb) – McGarnagle

Répondre

1

La réponse courte est NON.

Vous demandez essentiellement une jointure et MongoDB n'autorise pas explicitement les jointures.

Cependant, en fonction de vos besoins, vous pourrez peut-être sortir avec la structure suivante:

{ "_id" : "internal_key1", "ext_id": "ext_key111", "data" : "some data1" } 

Vous pouvez créer un index supplémentaire sur ext_id. Vous pouvez même le rendre unique, ce qui semble correspondre à vos données.

db.ensureIndex({ ext_id: 1 }, { unique: true, background: true }) 
+0

Maintenant, je n'ai pas à écrire ma propre réponse, puisque c'est exactement la solution à laquelle je me suis tourné. –

Questions connexes