鍍金池/ 問答/數(shù)據(jù)庫/ mongodb多次查詢,不斷添加條件,如何處理更好

mongodb多次查詢,不斷添加條件,如何處理更好

查詢列表(20萬數(shù)據(jù)),先通過條件一查詢,如果查詢出來的數(shù)據(jù)大于一,則添加條件二(查詢條件為條件一加上條件二),如果結(jié)果大于一則繼續(xù)添加條件,如果等于一則終止,如果結(jié)果為0則獲取上一次查詢的結(jié)果;以此類推,添加多個條件。這樣的情況如何處理更好呢?
現(xiàn)在想到的思路就是保存每次查詢到的結(jié)果,在結(jié)果上查詢,但是如果結(jié)果很大的話,就無法實現(xiàn)。另外也想過使用聚合但是因為條件判斷感覺無法處理。各位有什么好的方法嗎?

回答
編輯回答
奧特蛋

主要問題是,這個過程是怎么進行的?

場景一

如果條件一多于1條數(shù)據(jù),是由用戶選出第二個條件再查第二次,然后再查,如果再多于1,用戶再選出第三個條件再查
如果是這種場景,我覺得這不是一個數(shù)據(jù)庫需要解決的問題,而更應該是你如何引導用戶操作的問題。簡單的實現(xiàn)可以做到:

  • 由AJAX加載查詢結(jié)果,如果后一次查詢結(jié)果是0,則不要更新當前頁面;反之更新頁面中的結(jié)果。

不用考慮保留上一次的結(jié)果的問題,要保留的只是上一次的條件,保留結(jié)果無論對數(shù)據(jù)庫效率還是對開發(fā)復雜度都沒有好處。

場景二

如果是用戶一次性給定了有順序的n個條件,你需要查到多少個條件時記錄只剩一條。
如果是這種場景,同樣不用考慮保留中間結(jié)果的問題??梢钥紤]倒過來查,先使用最多條件,沒有結(jié)果則減一個條件,一直查到有結(jié)果為止,那就是你要的結(jié)果。

2017年3月19日 00:47