我有一些文件看起來像:的MapReduce將項目插入一個新的集合,以隨機順序
{
_id: 3,
key: 3,
stuff: "Some data"
}
一些文件也有signUpDate
我們可以填充用於演示目的集合像這樣:
for(i=1; i<=100000; i++){
if(i%3===0)
db.numbers.insert({_id:i, key:i, stuff:"Some data", signUpDate: new Date()});
else
db.numbers.insert({_id:i, key:i, stuff:"Some data"});
}
...這樣的文件,第三有signUpDate
我想要做的就是創建一個映射精簡函數,它所有的文件,其中signUpDate不爲空,並將其插入到一個單獨的集合,隨機排序
這可能嗎?
可以你澄清你的意思是「隨機排序」?你的意思是你想$自然順序不對應於id順序嗎?另外,你的收藏在現實生活中有多大? –
我的意思是...沒有插入1,2,3,4,5等等...(正如你所看到的,文件的ID是遞增的整數) 數據集大約在'現實生活' – Alex
技術上mongodb不按順序插入,所以文檔已經部分隨機化。但是要在集合中隨機插入(均勻分佈);那麼一種方法是在目標集合中使用增量id或0和1之間的rand()編寫2m行,然後使用rand()來更新目標集合中該行與來自源的行,但是,您的可能只是想隨機選擇它們而不是隨機自然排序,因爲再次選擇它們不會像自然順序那樣隨機排列 – Sammaye