我有一個包含許多文檔(可能是數百萬)的集合。當用戶插入一個新文檔時,我希望有一個字段來維護我可以索引的數據的「順序」。例如,如果一個字段是時間,以這種格式「1352392957.46516」,如果我有三個文檔,第一個是時間:1352392957.46516,第二個是時間:1352392957.48516(20ms之後),第三個是1352392957.49516(10ms之後)喜歡有另一個領域,其中第一個文檔將有0,第二個將是1,第三個2,依此類推。維護MongoDB集合的順序
我想要這個的原因是,我可以索引該字段,然後當我做一個查找時,我可以做一個有效的$ mod操作來下采樣數據。因此,例如,如果我有一百萬個文檔,並且我只希望它們中的1000個均勻分佈,我可以在整數字段上執行$ mod [1000,0]。
我無法在時間字段上做到這一點的原因是因爲它們可能不是完全隔開的,或者可能都是偶數或奇數,所以模塊不起作用。所以單獨的整數字段會以線性遞增的方式保持順序。
另外,您應該能夠在集合中的任何位置插入文檔,因此所有後續字段都需要更新。
有沒有辦法自動做到這一點?或者我會不得不實施這個?或者是否有更有效的方式來做我所描述的內容?
此http:// WWW .mongodb.org/display/DOCS/How + to + Make + an + Auto + Incrementing + Field應該可以解決您的問題。 –
爲什麼你需要「插入」一個文件?更新「所有後續整數」聽起來很痛苦。你有什麼理由不能添加到最後?整數是否應該是一個排序順序呢? – cirrus
該整數應該是排序順序,因爲這是我能想到的有效降低數據採樣率的唯一方法。我希望用戶能夠插入可能比最終時間戳更早的舊數據。 –