2016-05-27 11 views
0

特定の場所の近くで、field1 = Noおよびfield2 = No(これはcatと同じです(field2))のユーザーを検索しようとしています私はこのようなクエリを実行しようとすると、それは結果nodejsとmongodbのフィールドでパラメータを使用すると、結果が空になる検索クエリ

function (currentLoc, radius, cat, db, callback) { 
    ... 
    var query = db.collection('User').find({ 
     CurrentLoc: { 
      $geoWithin: { $centerSphere: [currentLoc, maxDistance] } 
     }, 
     field1: "No", 
     cat: "Yes" 
    }); 
} 

私がしようとするとフィールド2と、クエリの代わりに、パラメータ猫を実行すると、クエリが動作し、結果を返すを返しません。パラメータが渡されてもうまくいかない理由がわからない

+0

少し混乱しています。あなたのオブジェクトは '{field1: 'いいえ'、cat: 'はい'}'または '{field1: 'いいえ'、field2: 'はい'}'のように見えますか?私はあなたがfield2で意味するものがcatと等しいかどうかはわかりません。 – steezeburger

+0

申し訳ありませんが、データベースには{field1: 'いいえ'、field2: 'はい'}という文字列があります。この関数では、cat2というフィールドにcatパラメータが渡されています。それはあなたのためにそれを明確にしていますか? –

答えて

0

プロパティ 'cat'を検索するように指示しています。クエリプロパティを手動で設定する必要があります。 How to use a variable as a field name in mongodb-native findOne()?

+0

私はリンクの例に従おうとしていますが、私は未定義でreqを取得しています。それはどこに定義されていると思われますか? paramsと同じですが、インポートするライブラリがありますか? –

+0

申し訳ありませんでした早く携帯電話にあったので、迅速な返信を与えた。 .find()に渡す引数は、javascriptオブジェクトです。あなたの場合は '{CurrentLoc:{}、field1: 'No'、field2: 'Yes'}'のようになります。これをcatの値で動的に構築するには、 'var toFind = { CurrentLoc:{}、 field1: 'いいえ' }のようなものがあります。 toFind [cat] = 'はい'; ' 最後に.find()コールにクエリを渡します。 ' var query = db.collection( 'User')。find(toFind); ' – steezeburger

+0

これは素晴らしい作品です!本当にありがとう! –

関連する問題