2015-09-07 30 views
1

我讀了關於documentation實現與MongoDB中一個購物車的方式,但我對流量的疑慮。直到用戶執行結賬或購物車到期MongoDB的購物車,如何檢查和更新庫存

隨着每一個用戶進入購物車中的產品時這種實現中,支付金額保留到客戶不提供給其他買家。

這種做法是一個問題,因爲,根據經驗,深受廣大用戶的不買結束,留下一段只保留了他的產品,因此不實惠。 這會導致銷售損失。

例如:

  • 存在與5個批量中分貝產品
  • 客戶端 「A」 與量使該產品在籃5
  • 然後在db可用
  • 0產品
  • 另一個客戶端「B」進入網站,不能購買該產品到底
  • 客戶「A」離開現場留下的車已滿。
  • 購物車將在一小時後自動清除。

結果:一個小時的產品不能被任何人購買!

我認爲更好的辦法是隻在結賬的實際金額進行檢查和更新。
這樣你就不會失去太久的銷售。

這種方法的問題是在數量的原子更新的實現。

您對這種方法有什麼看法?
您是否計劃實施?

回答

0

如果我是你,我會使用多個記錄相同的集合中的每個產品放入購物車,但有10分鐘的TTL上「在購物車」類型的文檔的索引(見蒙戈TTL文檔)。然後,使用db.col.aggregate(...)可以對這些記錄進行求和並從可用總數中扣除計數。如果用戶沒有購買,TTL將自動刪除de文件。如果他購買,您可以真正從可用總額中扣除使用doc.update和$ inc的負值,並刪除相關的購物車文檔。

產品文檔:

{ 
    type: 'product' 
    product_id: 123, 
    available: 4 
} 

在推車文件(S)爲多如 「正在購物」 或abandonned車:

{ 
    type: 'in-cart' 
    product_id: 123, 
    customer_id: 1, 
    taken: 2 
} 

{ 
    type: 'in-cart' 
    product_id: 123, 
    customer_id: 2, 
    taken: 1, 
} 
相關問題