MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

différence entre l'agrégat ($ match) et la recherche, dans MongoDB ?

Pourquoi la sortie agrégée ne revient-elle pas sous la forme d'un DBCursor ou d'une List ?

Le cadre d'agrégation a été créé pour résoudre des problèmes simples qui, autrement, nécessiteraient une réduction de carte.

Ce cadre est couramment utilisé pour calculer des données qui nécessitent la base de données complète en entrée et quelques documents en sortie.

Quelle est la différence entre l'opérateur $match utilisé dans la fonction d'agrégation et la recherche habituelle dans Mongodb ?

L'une des différences, comme vous l'avez dit, est le type de retour. Trouver la sortie des opérations en tant que DBCursor .

Autres différences :

  • Le résultat de l'agrégation doit être inférieur à 16 Mo. Si vous utilisez des fragments, les données complètes doivent être collectées en un seul point après le premier $group ou $sort .
  • $match le seul but est d'améliorer la puissance de l'agrégation, mais il a d'autres utilisations, comme améliorer les performances de l'agrégation.

et aussi pourquoi ne pouvons-nous pas compter les documents qui sont retournés ?

Tu peux. Comptez simplement le nombre d'éléments dans le tableau résultant ou ajoutez la commande suivante à la fin du tube :

{$group: {_id: null, count: {$sum: 1}}}

Pourquoi la fonction de recherche ne permet-elle pas de renommer les noms de champs comme la fonction d'agrégat ?

MongoDB est jeune et les fonctionnalités arrivent encore. Peut-être que dans une future version, nous pourrons le faire. Renommer les champs est plus critique dans l'agrégation que dans trouver .

MODIF (2014/02/26) :

Les opérations d'agrégation MongoDB 2.6 renverront un curseur.

MODIFIER (09/04/2014) :

MongoDB 2.6 a été publié avec les modifications d'agrégation prévues.