0
我想通過貓鼬訪問集合超過一百萬個文檔(1281034),但沒有成功。大集合時貓鼬錯誤
我已經試過這3種方式:
到整個集合
@find({},'_id n').exec (error, value) ->
Mongoose: items.find({}) { fields: { n: 1, _id: 1 } }
有了限制正常訪問,這工作,但99999(最大允許)限制其不夠
@find({},'_id n').limit(99999).exec (error, value) ->
Mongoose: items.find({}) { limit: 99999, fields: { n: 1, _id: 1 } }
With a stre上午,這也適用,但給出了一個內存不足的錯誤
stream = @find({},'_id n').stream()
stream.on('data', (doc)->
results.push doc
console.log "#{results.length}"
).on('close', ->
console.log "Finished : #{results.length}"
)
在崩潰415786個文件:(致命錯誤:CALL_AND_RETRY_LAST分配失敗 - 進程內存不足)
爲什麼你想把所有的百萬+文檔放到內存數組中?可能有更好的方法來做你最終想做的事情。 – JohnnyHK
將它們緩存在另一個存儲系統(如redis)中。 @JohnnyHK – Imnl
那麼爲什麼不擴大你的流式方法來添加文檔到redis,因爲你在''data''回調中接收它們,而不是將它們全部存儲在數組中? – JohnnyHK