2017-12-29 20 views
0

Ich habe zwei Modelle - M1 und M2.Mongoose bevölkern, wo

In M1 habe ich eine Reihe von M2-Objekten.

Ich versuche, eine Abfrage zu erstellen, die eine Reihe von M1-Modellen aber NUR ergreifen, wenn ein bestimmtes Feld in M2 die Kriterien erfüllt, die ich einstelle.

I habe Setup die Modelle korrekt (M1 so hat ein Array von Schema.Types.ObjectId für M2).

Idealerweise möchte ich würde so etwas tun:

var result = await M1.find({ 
     'm2.title': 'title-match', 
     // ... 
     // Plus other criteria 
    }) 
    .populate('m2') 
    .exec(); 

Also, was ich möchte zurück ist alle M1 Modelle, die ein M2-Modell haben, die ‚Titel‘ auf ‚Titel-Spiel‘ haben .

Aber dies scheint nicht zu arbeiten, und ich bin mir nicht sicher, warum.

Ich habe versucht, 'Match' in der Populate-Funktion zu verwenden, aber das spielt nicht schön mit den anderen Suchkriterien, die ich eingerichtet habe (so könnte ich zum Beispiel passen in die Populate-Funktion, aber wenn ich ein M1-Modell habe hat die richtigen M2-Modelle, aber es erfüllt nicht die anderen Kriterien, dann wird es weggelassen).

Ich brauche alle meine Füllung Filterung mit den anderen Filtern gemischt werden, so dass es richtig bewertet, ob es in den Ergebnissen enthalten sein sollte oder nicht.

Antwort

Verwandte Themen