2017-11-03 10 views
0

NodeJSの2つの場所の間でマングースを使用してレコードを取得する方法。関数を使用して関数を使用して、NodeJSの2つの場所の間でレコードを取得

getAllEvent: function (locationReq, callback) {  
     Events.find({ 
     location: { 
      $near: { 
       $geometry: { 
        loc: locationReq 
       }, 
       $maxDistance: 0, 
       $minDistance: 250 
      } 
     } 
    }, {isDeleted: false}, function (error, data) { 
     callback((error) ? {} : (data == null) ? {} : data); 
    }); 
    }, 

この関数はnull値を返します。

特定のレコードの場所は、データベースドキュメントのコレクションにも格納されます。 LocationReqに2つのロケーション値が送信されます。レコードがその2つの場所の間にある場合、レコードが必要です。

データベースの文書は以下の通りです

{ 
    "_id" : ObjectId("59db3a1e56e60915086fb73f"), 
    "eventName" : "5643213246", 
    "createdId" : "599d698ffa23343efe9c5cbb", 
    "eventDateTime" : ISODate("2017-08-09T00:00:00.000Z"), 
    "startTime" : ISODate("2017-08-16T13:01:52.379Z"), 
    "endTime" : ISODate("2017-08-16T13:01:52.379Z"), 
    "location" : { 
     "lat" : "59.9500", 
     "lng" : "30.3300" 
    }, 
    "description" : "description123", 
    "category" : "59db12dab928f105a87348f6", 
    "host" : "host", 
    "phoneNumber" : 123123, 
    "isDisabled" : false, 
    "isDeleted" : true, 
    "dateCreated" : ISODate("2017-10-09T08:58:06.687Z"), 
    "__v" : 0, 
    "updatedAt" : ISODate("2017-10-24T06:47:07.966Z") 
} 
+0

に位置パラメータを交換してください。 '$ near'はあなたが本当に意味するものなら' nearest 'で検索します。とにかく、あなたの値は数値でなければならない "文字列"です。彼らは本当に "キー"であってはならず、好ましくはGeoJSONとして保存されます。また、「近く」を意味する場合は、「2dpshere」インデックスも必要です。だからいくつかの問題と一般的には少し不明なことをあなたが求めているものよりも。 –

+0

locationReqとは何ですか、投稿してください。 –

+0

これは2つの緯度が長い別の場所フィールドになります –

答えて

0
getAllEvent: function (locationReq, callback) {  
     Events.find({ 
     loc: { 
      $nearSphere: { 
        $geometry: {type: "Point", coordinates: [lng, lat]}, 
        $maxDistance:distance 
          } 

    }, {isDeleted: false}, function (error, data) { 
     callback((error) ? {} : (data == null) ? {} : data); 
    }); 
    }, 

そして "間" の定義loc

関連する問題