2016-04-19 16 views
0

私はNode.jsと集計機能を持つMongooseライブラリを使用しています。ここでMoongose .geoNear集約、基本的なクエリオプションを追加

は魔法のように動作し、コードの私の作品は、次のとおりです。

User.geoNear({ type: "Point", coordinates: [geo.lon, geo.lat] }, { 
    spherical: true, 
    maxDistance: 50, 
    }, function(err, results, stats) { 
    if (err) { 
     // handle err 
    } 
} 

今、私はそのようにMongoDB $ninオプションを使用して文書を除くなどの基本的なクエリオプションを追加したいと思います。たとえば、特定の位置の周りのユーザーを検索したいのですが(私の例で行ったように)、一致するものがないという制約があります。idsです。 この種のオプションをクエリに追加するには、どうすれば可能ですか?

答えて

1

アグリゲーションフレームワークで行うことができます。試してください:

db.collection.aggregate(
[ 
    { 
     '$geoNear': { 
      'near': { 
       'type': 'Point', 
       'coordinates': [ -77.395410 , 38.967995 ] 
      }, 
      'spherical': true, 
      'distanceField': 'dist', 
      'maxDistance': 5000   
     } 
    }, 
    { 
     $match:{_id:{$nin: [ObjectId("5716163704ca42c7b579c7e3")]}} 
    } 
]); 

上記のクエリは、半径が5000メートルのすべてのドキュメントを検索し、指定された_idのドキュメントを除外します。

+0

これはまさに私が探していたものです。ありがとう。 – FrenchFalcon

+0

集計関数の後に 'select()'メソッドを追加できますか? – FrenchFalcon

+0

あなたは何をしようとしていますか? – Saleem

関連する問題