sql >> データベース >  >> NoSQL >> MongoDB

mongodb、geoNearとdateで並べ替えますか?

    $nearを直接使用する方法はありません または$nearSphere これらの演算子は両方ともfind()を実行した結果をすでに並べ替えているため、別のフィールドで並べ替えます 。 'date'で再度並べ替えると、結果が再並べ替えられます。ただし、できることは、$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. MSVCでmongodbc++ドライバーを使用してプロジェクトをビルドできません

    2. Hadoop RecordReaderの紹介、作業とタイプ

    3. mongodbクエリのネストされた構造

    4. mongoDBのすべてのサブジェクトのマークを集約する方法