2013-07-10 102 views
3

我期待實現一個固定長度的基於時間的隊列,其中舊項目從後面彈出。Mongoose是否支持固定隊列數組的概念

例如,我有一個限制爲10個項目的評論列表,第11個項目進來,最早的項目落在背後。

如果在Mongoose中不支持,有人可以告訴我一些我可以使用的技巧嗎? (預/等)

非常感謝

回答

3

MongoDB引入了capped arrays(來自v2.4),它可以用來限制數組中元素的數量。

您可以在 limit number of elements

+0

貓鼬的任何具體例子? – Slappy

+0

我對貓鼬沒有太多的經驗,抱歉。 –

+0

+1這是在貓鼬沒有什麼不同。 – JohnnyHK

0
db.myCollection.update({"arrayField.10": {$exists: true}}, {$pop: {"arrayField": 1}}) 

的「A.10」鍵檢查元件10在「arrayField」的存在,這將意味着在陣列大小等於或大於10。如果它會自動從陣列背面彈出1個元素。

可能不是您的案例的最佳解決方案,但希望這可能會讓你走向正確的方向。

+0

這是使用本機mongo正確嗎? – Slappy

+0

正確,這個查詢是本地mongo。 –

1

看到一些例子根據Mongoose Wiki - 它現在支持MongoDB的上限陣列:

貓鼬3.6支持這些新的MongoDB 2.4數組運算符。模型。更新(matcher,{$ push:{docs:{$ each:[{x:1},{x:23}, {x:5}],$ slice:-2,$ sort :{x:1}}}})