2016-09-14 159 views
1

是否有使用JSON在MongoDB中進行查詢並返回一個對象,如果json的一個字段與數據庫中的某個字段匹配? 例如,我有這個對象調用keysArray如何使用JSON在MongoDB中進行查詢?

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

,我想作一個查詢中蒙戈通過這個對象作爲查詢字段並返回,如果在我的數據庫中的某些對象與至少一個匹配字段:

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

即使我的數據庫中有一個對象與這些字段匹配,我也沒有收到對象。

在此先感謝

+0

你是否打錯了傳遞給查詢的對象?你有'.find({keysArray},func ...)',你不想傳遞'.find({key},func ...)'? –

+0

是的,我試過這個,但我仍然沒有結果返回 – PauloIke

+0

這聽起來像你想要「或」邏輯的JSON – felipsmartins

回答

3

...我想作一個查詢中蒙戈通過這個對象作爲 查詢字段和返回,如果在我的數據庫對象的一些與那些在 至少一個相匹配領域。

聽起來像OR邏輯 - 如果我理解的很好。
在這個特定的情況下,不可能通過類似JSON的對象進行查詢,因爲它將是一個隱含的邏輯條件。
所以,你應該建立第一個OR表達和collection.find()使用它,像這樣:

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}; 
} 

這將建立一個像這樣的表達式:

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

所以:

db.collection.find(build_logic_or(myjson)) 
相關問題