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

mongodb, mengurutkan berdasarkan geoNear dan tanggal?

Tidak ada cara langsung untuk menggunakan $near atau $nearSphere dan urutkan berdasarkan bidang lain, karena kedua operator ini sudah mengurutkan hasil dari melakukan find() . Saat Anda mengurutkan lagi menurut 'tanggal', Anda sedang mengurutkan ulang hasilnya. Apa yang dapat Anda lakukan, bagaimanapun, adalah mengambil hasil dari $nearSphere secara bertahap, dan mengurutkan setiap set hasil. Misalnya:

function sortByDate(a, b) { return a.date - b.date; }

// how many results to grab at a time
var itersize = 10;
// this will hold your final, two-way sorted results
var sorted_results = new Array();
for (var i=0, last=db.coll.count(); i<last-itersize; i+=itersize) {
    var results = db.coll.find( {"date":{$gte:date},
                                 // longitude, then latitude
                                 "location":[lng, lat]} ).skip(i).limit(itersize).toArray();
    // do date sorting app-side for each group of nearSphere-sorted results
    sorted_results = sorted_results.concat( results.sort(sortByDate) );
}

Anda juga harus mengetahui urutan yang Anda tentukan koordinat geospasial dalam kueri mongodb. MongoDB menggunakan geojson spec, yang melakukan koordinat dalam urutan X, Y, Z (yaitu, bujur, lintang).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengapa ObjectIds MongooseJS saya gagal dalam tes kesetaraan?

  2. Apakah saya ditagih berlebihan oleh Azure Cosmo DB untuk database 45MB?

  3. Play-Framework 2.4.x digunakan dengan MongoDB dan Java 8

  4. kesalahan penguraian JSON mongoexport

  5. Permintaan Mongo $exists tidak mengembalikan dokumen yang benar