2016-07-06 4 views
1

私は2つのコレクションServiceProviderとParentを持っています。Mongo指定された場所から10マイル以内のすべての文書を取得

のServiceProvider(_id、ServiceProviderID、...)

両親(_id、ID、場所:[緯度、ロング]、...)のServiceProviderコレクションの

ServiceProviderIDがリンクされています親コレクションのIDに変換します。

私はすべてのサービスプロバイダーを10マイル以内に欲しいです。

基本的に私はServiceProviderとParentsコレクションに加わり、10マイル以内にすべてのServiceProviderをリストしたいと思います。

db.ServiceProvider.aggregate([ 
    { 
     $lookup: 
     { 
      from: "Parents", 
      localField: "ServiceProviderID", 
      foreignField: "ID", 
      as: "ServiceProviderArr" 
     } 
    }, 
    { 
     $match: { "ServiceProviderArr": { $ne: [] } } 
    } 
]) 

それは私に次のような結果得られます:私はよく理解していれば、このクエリは何が必要かもしれません

{ 
    "_id" : ObjectId("577cc2ce588aec59178b4567"), 
    ... 
    "ServiceProviderArr" : [ 
     { 
      "_id" : ObjectId("577cbe33588aecf6168b45c6"), 
      "ID" : "193", 
      ... 
      "Location" : { 
       "Lat" : "40.75368539999999", 
       "Long" : "-73.9991637" 
      } 
     } 
    ] 
} 
+0

私の答えはあなたの質問を解決しましたか? – sergiuz

+0

@SergiuZaharieはい、あなたの答えは本当に役に立ちました。ありがとう! – Chinmay

答えて

1

を:

私は、次のクエリを試してみました

db.Parents.aggregate([ 

    { $geoNear: { 
       near: { type: "Point", coordinates: [ 0, 0 ] }, 
       spherical: true, 
       distanceField: "dist.calculatedd", 
       maxDistance: 10 
      } 
    }, 
    { $lookup: { 
      from: "ServiceProvider", 
      localField: "ID", 
      foreignField: "ServiceProviderID", 
      as: "ServiceProviderArr" 
     } 
    } 
]).pretty() 

これに応じて中心点の座標と最大距離を変更する必要があります

関連する問題