8
我通過MapReduce獲取了大量的ID。我已經按照某些標準對這些ID進行了排序,現在我需要按以下順序獲取這些對象:Mongoid:通過ID數組查找
MyModel.find(ids)
對不對?但它返回的對象不是按照ID存儲的順序。看起來像
MyModel.where(:_id.in => ids)
它不會以與存儲的ID相同的順序返回提取的對象。現在
我能做到這一點
ids.map{|id| MyModel.find(id)}
這將做的工作,但它會敲數據庫很多很多次。
它是更快然後從數據庫中獲取每個項目? – fl00r
@ fl00r:應該是,只需一個MongoDB訪問權即可獲取模型和一個簡單的排序(使用內置的Schwartzian變換),以便按照所需的順序獲取事物。數據庫訪問通常是昂貴的部分。嘗試對它進行基準測試,如果沒有真實數據的訪問就很難保證。 –
@ muistooshort,我正面臨類似的問題。一般來說,將db命中最小化是更好的做法嗎? –