sql >> Database >  >> NoSQL >> MongoDB

Mongo complexe sortering?

UPDATE: Dit antwoord lijkt achterhaald; het lijkt erop dat aangepaste sortering min of meer kan worden bereikt met behulp van het $project functie van de aggregatiepijplijn om de invoerdocumenten te transformeren voordat ze worden gesorteerd. Zie ook het antwoord van @Ari.

Ik denk niet dat dit direct mogelijk is; de sorteerdocumentatie vermeldt zeker geen manier om een ​​aangepaste vergelijkingsfunctie te bieden.

Je kunt het sorteren waarschijnlijk het beste in de client doen, maar als je echt vastbesloten bent om het op de server te doen, kun je misschien db.eval() gebruiken om de sortering op de server uit te voeren (als uw klant dit ondersteunt).

Server-side sorteren:

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

Vergeleken met de equivalente sortering aan de clientzijde:

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

Merk op dat het ook mogelijk is om te sorteren via een aggregatiepijplijn en op de $orderby operator (d.w.z. naast .sort() ) maar op geen van deze manieren kunt u een aangepaste sorteerfunctie bieden.



  1. MongoDB vinden()

  2. Hoe een gesorteerde set objecten in redis op te slaan?

  3. Krijg alle sleutels in de Redis-database met python

  4. Integraties en services beschikbaar van MongoDB voor de cloud