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

mongodb, сортиране по geoNear и дата?

Няма директен начин за използване на $near или $nearSphere и сортиране по друго поле, защото и двата оператора вече сортират резултатите от извършване на find() . Когато сортирате отново по „дата“, вие сортирате отново резултатите. Това, което можете да направите обаче, е да вземете резултати от $nearSphere постепенно и сортирайте всеки набор от резултати. Например:

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) );
}

Трябва също да сте наясно с реда, в който посочвате геопространствени координати в заявките на mongodb. MongoDB използва geojson спецификация, която прави координати в ред X, Y, Z (т.е. дължина, ширина).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да поръчате MongoDB Aggregation със съвпадение, сортиране и лимит

  2. Масив за групова актуализация на съответстващ поддокумент в Mongodb

  3. Как да запазите само част от датата с mongoose, а не във формат ISODate

  4. Въведение в Morphia – Java ODM за MongoDB

  5. Spring MongoTemplate - намиране по регулярен израз в колекция