2016-09-14 24 views
1

JSONを使用してMongoDBでクエリを作成し、jsonの1つのフィールドがデータベースの一部と一致するとオブジェクトを返すのはとにかくありますか? には、例えば、私は JSONを使ってMongoDBでクエリを作成する方法は?

{ house: 'true', garden: 'false' } 

keysArray

と呼ばれるこのオブジェクトを持っており、私のデータベース内のいくつかのオブジェクトは、それらのうちの少なくとも1つに一致した場合、私は、クエリのフィールドとしてこのオブジェクトを渡しモンゴでクエリを作成し、返したいですフィールド:

keysArray.forEach(function(key){ 
      collection.find({keysArray}, function(err, propertyMatch){ 
       console.log(propertyMatch) 
      }) 
     }) 

私のデータベースにこれらのフィールドに一致するオブジェクトが1つあっても、オブジェクトが戻ってこない。事前に

おかげ

+0

あなたはクエリに渡すオブジェクトをタイプしましたか?あなたは '.find({keysArray}、func ...)'を持っています。 '.find({key}、func ...)'を渡したくないでしょうか? –

+0

ええ、これを試しましたが、私はまだ結果が戻ってきていません。 – PauloIke

+0

jsonで "OR"ロジックが必要なようです – felipsmartins

答えて

3

...と私のデータベース内のいくつかのオブジェクトは、それらの少なくとも 1つに一致した場合、私は クエリフィールドとしてこのオブジェクトを渡しモンゴでクエリを作成し、返したいですフィールド。

私はそれをうまく理解すれば、ORロジックのように聞こえます。
この具体的なケースでは、暗黙のおよびロジック条件であるため、JSON形式のオブジェクトを渡すことはできません。だから、

{"$or":[{"status":32},{"profile":{"$exists":false}}]} 

db.collection.find(build_logic_or(myjson)) 
それは、このような式を作成します

var myjson = {'status': 32, 'profile': {$exists: false}}; 

function build_logic_or(json) { 
    var orExpr = []; 

    for (var field in json) { 
     var expr = {}; 
     expr[field] = json[field]; 
     orExpr.push(expr); 
    } 

    return {'$or': orExpr}; 
} 


だから、このような何かを最初のAまたは式を構築し、collection.find()でそれを使用する必要があります

関連する問題