2014-10-07 35 views
-1

我想避免寫條件語句查詢前要檢查參數我的數據庫 ,這樣我就不用寫多次類似的查詢,但我必須寫一個單獨的查詢中的參數。測試一個MongoDB的查詢

所以我的第一個查詢是

db.results.find({ travel_class : "first" } }) 

並返回若干文件

我的第二個查詢

var travel_class_filter = "all"; 
db.results.find({'$and' : [ { travel_class_filter : "all"} , { travel_class : "first" } ]}) 

並返回相同的0文件代替NUM第二查詢

你知道爲什麼的文件BER?

+0

你能澄清你想要做什麼? – JohnnyHK 2014-10-07 16:43:03

+0

我取決於命名travel_class_filter 1個參數有一個查詢。如果此參數設置爲「全部」,我不想在travel_class列上進行過濾。所以我想編寫一個查詢,而不是像一些「如果(travel_class_filter == '所有'){db.results.find({})}其他{db.results.find({travel_class:travel_class_filter}})} SO我覺得我的查詢應該是:db.results.find({ '$或':[{travel_class_filter: 「所有」},{travel_class:travel_class_filter}]}),但它不工作 – 2014-10-07 17:03:08

回答

1

您不能測試參數作爲查詢的一部分,但是你可以通過編程的方式構建您的查詢對象做到這一點:

var query = {}; 
if (travel_class_filter != 'all') { 
    query.travel_class = travel_class_filter; 
} 
db.results.find(query);