在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

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

回答
編輯回答
奧特蛋

主要問(wèn)題是,這個(gè)過(guò)程是怎么進(jìn)行的?

場(chǎng)景一

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

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

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

場(chǎng)景二

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

2017年3月19日 00:47