0
考慮我在MongoDB中有兩個集合。一個產品的文件,如:查詢MongoDB最後的項目
{'_id': ObjectId('lalala'), 'title': 'Yellow banana'}
,另一個類似的文件存儲的價格變化:
{'product': DBRef('products', ObjectId('lalala')),
'since': datetime(2011, 4, 5),
'new_price': 150 }
一個產品可以有多個價格的變化。價格持續到有新的更改並帶有更新的時間戳。我想你已經發現了主意。
說,我有100個產品。我想查詢我的數據庫,以瞭解2011年6月9日那一刻每種產品的價格。在MongoDB中執行此查詢的最有效(快速)方式是什麼?假設我沒有緩存解決方案或緩存爲空。
我想到了關於prices
集合的group
聲明,其中reduce函數會在提供日期之前選擇最後的since
,按product.$id
分組。但在這種情況下,我不會受益於since
字段上的索引,並且將掃描所有文檔。
任何想法?
嗯,我認爲這是一個很大的否定。它真的具有可比性:100個查詢有1個項目,1個查詢有100個項目? – nkrkv
我最初是爲了團隊選項而去的,而且速度非常慢。在同樣的任務下比mySQL慢很多。我甚至沒有想過要嘗試爲每個項目設置一個查詢,直到Mongo郵件列表中的某個人建議它。令我驚訝的是它比mySQL更快。 – FlappySocks