2010-12-15 115 views
2

Est-il possible de commander une collection MongoDB par la taille d'un tableau imbriqué? Supposons par exemple que nous ayons une collection de documents Question et que chaque document comporte un tableau imbriqué de réponses. Je veux être en mesure de trier la collection et de sortir les questions les plus répondues? J'ai regardé autour de moi et je ne suis pas sûr que ce soit faisable directement à partir de MongoDB et je pense que ce serait très performant d'extraire toutes les questions et ensuite de les trier en Java.Commande de collection MongoDB par taille de tableau imbriqué

Répondre

4

Vous cann't requête en taille de collection imbriquée, vous devez créer le terrain avec la taille de la collecte de ces besoins (mongo db documentation):

L'opérateur de taille $ correspond à tout tableau avec le nombre de éléments. L'exemple suivant correspondrait à l'objet {a: [ "foo"]}, puisque ce tableau a un seul élément:

db.things.find ({a: {$ size: 1}} ) ;

Vous ne pouvez pas utiliser $ size pour trouver une plage de tailles (par exemple: tableaux avec plus de 1 élément). Si vous avez besoin de requête pour une plage, créez un champ de taille supplémentaire que vous incrémentez lorsque vous ajoutez éléments.