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

Монго комплексно сортиране?

АКТУАЛИЗИРАНЕ: Този отговор изглежда неактуален; изглежда, че персонализираното сортиране може повече или по-малко да бъде постигнато с помощта на $project функция на конвейера за агрегиране за трансформиране на входните документи преди сортиране. Вижте също отговора на @Ari.

Не мисля, че това е възможно директно; документацията за сортиране със сигурност не споменава начин за предоставяне на персонализирана функция за сравнение.

Вероятно е най-добре да направите сортирането в клиента, но ако наистина сте решени да го направите на сървъра, може да сте в състояние да използвате db.eval() за да организирате изпълнението на сортирането на сървъра (ако вашият клиент го поддържа).

Сортиране от страна на сървъра:

db.eval(function() { 
  return db.scratch.find().toArray().sort(function(doc1, doc2) { 
    return doc1.a - doc2.a 
  }) 
});

Сравнено с еквивалентното сортиране от страна на клиента:

db.scratch.find().toArray().sort(function(doc1, doc2) { 
  return doc1.a - doc2.b 
});

Имайте предвид, че също така е възможно да сортирате чрез конвейер за агрегация и чрез $orderby оператор (т.е. в допълнение към .sort() ) обаче нито един от тези начини не ви позволява да предоставите персонализирана функция за сортиране.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Геопространствена поддръжка в MongoDB

  2. Mongodb актуална корекция KB2731284

  3. редки индекси и нулеви стойности в mongo

  4. MongoDB $dayOfWeek

  5. windows:rails:грешка при инсталиране на bson_ext