2011-03-31 6 views
1

Supposons que j'ai plusieurs "publications" dans une base de données en tant que documents, chacune avec un attribut "auteur".Comment faire cette requête dans MongoDB?

Je veux exécuter une requête comme ceci:

posts.find(author IN 3, 5, 733, 144, 66, 3457 , 22, 156, 344...) 

Fondamentalement, je veux trouver tous les messages où l'auteur est ..... puis donner une centaine ids.

Quel est le moyen le plus efficace de le faire dans Mongo?

Répondre

3

Utilisez l'opérateur de Mongo $in:

posts.find({"author" : {"$in":[3, 5, 733, 144, 66, 3457 , 22, 156, 344]}}); 

Voici la référence: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in

Vous devriez probablement index le champ auteur aussi: posts.ensureIndex({author:1});

+0

Est-ce efficace? Et si les gens suivent des milliers? – TIMEX

+0

@TIMEX - J'ai fait quelques tests récemment, ce qui semblait indiquer qu'il y a un "sweet spot" concernant le nombre de valeurs dans une clause $ in (ie quantité de valeurs plus faible/plus grand nombre de requêtes vs plus grand nombre de valeurs/plus bas nombre de requêtes) - voir ma réponse ici pour plus de détails: http://stackoverflow.com/questions/5157265/is-it-ok-to-query-a-mongodb-multiple-times-per-request/5157425 – AdaTheDev

Questions connexes