Pour référence future: Ce sera possible dans MongoDB 2.2 en utilisant le nouveau cadre d'agrégation, en agrégeant comme ceci:
db.events.aggregate(
{ $unwind: '$participants' },
{ $match: {'age': {$gte: 18}}},
{ $project: {participants: 1}
)
Ceci renvoie une liste de documents n où n est le nombre de participants> 18 où chaque entrée ressemble à ceci (notez que les « participants » champ de tableau contient désormais une seule entrée à la place):
{
_id: objectIdOfTheEvent,
participants: { firstName: 'only one', lastName: 'participant'}
}
Il pourrait probablement même être aplati sur le serveur à r Ecrivez une liste de participants. Voir le officcial documentation pour plus d'informations.
merci pour les suggestions :) - En ce qui concerne la suggestion 2: Est-ce que cela affecterait la performance de mon application si elle doit filtrer ex. 120.000 documents dans l'application, par rapport à le filtrer dans la DB? – ebb
Probablement. Cela dépend vraiment de l'application, mais 120k documents est beaucoup. Je pense que vous devriez le comparer et voir. Si l'option 1 n'est pas possible et que l'option 2 n'est pas évolutive, vous pouvez prendre du recul et repenser la structure de votre document. –