我有一個數據過濾表單,其中包含大約15到20下拉字段。下拉字段的目的是提供數據過濾選項。例如看看下面的圖像(圖像是從Zoopla應用):MongoDB查詢 - 數據過濾
正如你可以在圖片中看到,它顯示7個下拉領域。用戶爲每個字段選擇一個選項,或者只選擇幾個字段並在搜索按鈕上點擊,並顯示結果。
我想實現相同的功能,但那裏有一個問題。
我至今嘗試過!
用戶有權選擇是否填寫所有的下拉字段或者只是2,仍然可以搜索到。搜索功能非常流暢。用戶只能選擇ONE下拉字段,並將其餘的空餘字段仍然可以得到結果。
要實現這一點,我在我的API創建以下路線。
app.get('/user/test',function(req, res) {
User.find({"$or": [{"employeeName": req.body.employeeName}, {"sector": {$elemMatch:{sec: req.body.sec}}} ] }, function(err, user)
{
if (err)
{
res.send(err);
}
console.log(user);
res.json(user);
});
});
正如你可以看到我現在用的是$或獲取數據back.The問題是,如果用戶只填寫兩個employeeName和扇區參數並搜索它發回的所有數據匹配employeeName或匹配扇區。實際上,我只想要匹配兩個參數的數據。然後,我嘗試使用$和,這解決了問題,但現在用戶不能僅搜索employeeName或單個扇區等單個參數。它必須有兩個參數才能返回數據。
總之我如何編輯我的API我的搜索路徑給用戶以任何方式與任何數量的參數搜索的靈活性。只是要清楚,搜索只會發生在頁面的下拉字段內。因此,如果有20個下拉領域則用戶的是可能性,能夠搜索用最少的1個參數,最多20個參數
這是一個有點困難,我瞭解我的點所以,如果你不明白的問題,請讓我知道,我會盡力解釋再次
構建一個查詢構建器,這將是一個更好的選擇 –
@SarathNair感謝您的答覆。你能再解釋一下嗎?或者如果你有任何資源?我不確定查詢構建器的含義。 – Skywalker
基本上你需要測試給定哪些參數,然後根據一系列預定義的查詢選擇相應的查詢或者(不確定這裏是否是適當的選擇)。查詢構建器基本上是Query對象的接口,其中每個方法都會返回查詢對象,以便您可以動態添加標準。我會告訴你如何去做,因爲我的JS太可怕了。 –