MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Penyortiran kompleks mongo?

PERBARUI: Jawaban ini tampaknya sudah ketinggalan zaman; tampaknya penyortiran khusus dapat lebih atau kurang dicapai dengan menggunakan $project fungsi pipa agregasi untuk mengubah dokumen input sebelum penyortiran. Lihat juga jawaban @Ari.

Saya tidak berpikir ini mungkin secara langsung; dokumentasi sortir tentu saja tidak menyebutkan cara apa pun untuk menyediakan fungsi perbandingan khusus.

Anda mungkin sebaiknya melakukan pengurutan di klien, tetapi jika Anda benar-benar bertekad untuk melakukannya di server, Anda mungkin dapat menggunakan db.eval() untuk mengatur untuk menjalankan pengurutan di server (jika klien Anda mendukungnya).

Sortir sisi server:

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

Dibandingkan dengan pengurutan sisi klien yang setara:

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

Perhatikan bahwa pengurutan juga dimungkinkan melalui jalur agregasi dan dengan $orderby operator (yaitu selain .sort() ) namun tidak satu pun dari cara ini yang memungkinkan Anda menyediakan fungsi pengurutan khusus.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pembaruan luwak tidak diperbarui:{ ok:0, n:0, nModified:0 }

  2. Bagaimana cara menggunakan titik dalam nama bidang?

  3. Menginstal MongoDB di Ubuntu 16.04

  4. Agregat Mongodb:konversikan tanggal ke zona waktu lain

  5. MongoDB $split