我不知道如何做到這一點,所以我需要你的建議。我有4個複選框形式:NodeJS + MongoDB:查找()具體條件
<input type="checkbox" class="checkbox" id="check_stain">
<input type="checkbox" class="checkbox" id="check_black">
<input type="checkbox" class="checkbox" id="check_titan">
<input type="checkbox" class="checkbox" id="check_special">
我發送帶有簡單的數據提交,因此,如果check_stain被選中,然後req.body.check_stain會「上」,如果不是 - 「不確定」。
在我的分貝我有收集「公司」,與幾個對象,每個都包含這樣的模式:
{...
"stain": "false",
"black": "true",
"titan": "false",
"special": "true",
...}
值是簡單的字符串。所以,我需要獲取指定複選框爲真(on)的每個對象,但不包括nones(未定義)的對象。換句話說,我想創建一個簡單的搜索算法。讓我舉個例子:我們檢查check_stain,我們應該得到污點是「真實」的每個對象。也許其他值將是「真」/「假」(無所謂)。如果我們選擇check_stain和check_black,我們得到污點& black =「true」的對象,其他字段不感興趣。
我總是以這樣代碼中找到:
collection.find({ %my-condition% } ,function(err, companies) {
companies.each(function(err, company){
//do smth with found
});
});
但我不知道怎麼寫條件去找尋。我想,我應該在請求中使用$或operator。我閱讀了文檔,但我仍然無法得到它。謝謝。
UPDATE:咦,這似乎是我的問題的解決方案:
if (req.body.sort_query == 'req-steel') {
var condition = {}
if (req.body.check_stain == "on") {condition['stain'] = 'true';}
if (req.body.check_black == "on") {condition['black'] = 'true';}
if (req.body.check_titan == "on") {condition['titan'] = 'true';}
if (req.body.check_other == "on") {condition['special'] = 'true';}
for (var i in condition) {
if (condition[i] != "true") {
delete condition[i];
}
}
var companies_list = new Array();
collection.find(condition, function (err, companies) {
companies.each(function (err, company) {
//do smth
});
});
};
在哪裏的問題?只需使用真實的鍵創建對象並將其他對象留出。 – noob
不知道我對你的理解是否正確。我應該在哪裏創建一個新的對象,數據庫與collection.insert()或在哪裏?就我所知,你建議發送這個對象作爲查找請求的參數或什麼? – f1nn
'stain'應該是'「true」':'collection.find({stain:「true」})''stain'&'black'應該是'「true」':'collection.find({stain:「 true「,black:」true「})' – noob