MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

разлика между aggregate ($match) и find, в MongoDB?

Защо обобщеният изход не се връща като DBCursor или списък?

Рамката за агрегиране е създадена за решаване на лесни проблеми, които иначе биха изисквали намаляване на картата.

Тази рамка обикновено се използва за изчисляване на данни, които изискват пълния db като вход и няколко документа като изход.

Каква е разликата между оператора $match, използван вътре в агрегатната функция, и редовното намиране в Mongodb?

Една от разликите, както казахте, е типът връщане. Намерете изхода на операциите като DBCursor .

Други разлики:

  • Резултатът от агрегирането трябва да е под 16 МБ. Ако използвате фрагменти, пълните данни трябва да бъдат събрани в една точка след първата $group или $sort .
  • $match единствената цел е да се подобри мощността на агрегирането, но има някои други приложения, като подобряване на производителността на агрегиране.

а също и защо не можем да преброим върнатите документи?

Можеш. Просто пребройте броя на елементите в получения масив или добавете следната команда в края на тръбата:

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

Защо функцията find не позволява преименуване на имената на полета като обобщаващата функция?

MongoDB е млад и функциите все още идват. Може би в бъдеща версия ще успеем да направим това. Преименуването на полета е по-критично при агрегирането отколкото в намери .

РЕДАКТИРАНЕ (26/02/2014):

Операциите за агрегиране на MongoDB 2.6 ще върнат курсор.

РЕДАКТИРАНЕ (2014/04/09):

MongoDB 2.6 беше пуснат с предвидените промени в агрегирането.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB/PyMongo:Запитване на множество критерии – неочаквани резултати

  2. Как да съхранявате геопространствена информация в mongoDB

  3. Mongoose сортира обобщения резултат

  4. Как мога да използвам променлива с регулярни изрази в заявка за MongoDB

  5. Свързване и създаване на MongoDB Joins с помощта на SQL:Част 2