2015-10-23 3 views
0

J'ai 2 collections et l'une d'elles est référencée en seconde. Maintenant, je voudrais effectuer une requête d'agrégation de regrouper la deuxième collection basée sur un champ de première qui sont référencés dans ceChamps d'agrégation mongodb référencés

Mon modèle pour la première sont:

first:{_id:ObjectId, name:String, region:String} 
the second has this model `second:{_id:ObjectId, name:String, firsts:[$first]} 

Mes documents se présentent comme suit:

premier document:

{ 
    "_id" : ObjectId("562a0f68f6a47a33b4000a52"), 
    "name" : "Name", 
    "region" : "Sicilia" 
} 

second document:

{ 
    "_id" : ObjectId("562a1250249c98273459be4a"), 
    "name" : "Name", 
    "firsts" : [ 
     { "first" : ObjectId("562a0f68f6a47a33b4000a52")}, 
     { "first" : ObjectId("562a0f68f6a47a33b400084d")} 
    ] 
} 

`

résultat que je voudrais cette couture

{ 
"_id": ObjectId of second document, 
"region": "region" 
} 

Je dois groupe deuxième collection sur tous les first.region. Est-ce possible?

+0

Nous ne savons pas si cela est possible. vous devriez peut-être nous montrer des exemples de documents de vos collections avec le résultat attendu. – styvane

+0

Je viens d'éditer ma question –

+0

Et à quoi devrait ressembler la sortie de votre requête? Assurez-vous de bien formater votre code cette fois-ci. – styvane

Répondre

-1

Il existe deux options.

db.first.find({},{region:1}).forEach(function(doc) { 
db.second.find({ "firsts" : doc.region }); 

});

ou

var data = db.members.find({},{region:1}).toArray(); 
db.second.find({ "firsts" : { "$in" : data} }); 
+0

Je dois effectuer une requête d'agrégation! –