Schema

如何處理 MongoDB 中的“或”可能性

  • July 27, 2013

我是 MongoDB 的新手,一般來說絕不是數據庫設計方面的專家。這感覺像是一個可能已經被回答了一百萬次的非常基本的問題,但我很難找到答案:有沒有一種好方法可以輕鬆處理數據庫中的一個/或選擇,或者將其結構化一種可以在程式碼中輕鬆處理的方法?

假設我正在 MongoDB 中建構雞尾酒數據庫。我正在為曼哈頓添加條目。

  • 2 盎司 波旁威士忌或黑麥威士忌(這是問題)
  • 1盎司。甜苦艾酒
  • Dash 芳香苦味酒
  • 裝飾黑櫻桃

所以我可能會做一個雞尾酒系列,其中包含如下條目:

{
   "_id" : "1234",
   "name" : "Manhattan",
   "ingredients" : [
       {
           "measure" : "2 oz.",
           "ingredient" : "Bourbon Whiskey"
       },
       {
           "measure" : "1 oz.",
           "ingredient" : "Sweet Vermouth"
       },
       {
           "measure" : "Dash",
           "ingredient" : "Aromatic Bitters"
       },
       {
           "measure" : "Garnish",
           "ingredient" : "Maraschino Cherry"
       }
   ]
}

這很好,但我怎麼把黑麥弄進去?我不認為我想做“成分”:“波旁威士忌或黑麥威士忌”,對嗎?為了稍後搜尋的目的,將它們分開是否更好?最好的做法是什麼,這裡?

此外,更棘手的飲料是馬提尼酒,我實際上會為伏特加使用與杜松子酒不同的裝飾,所以我想讓使用者選擇他們正在工作的基礎酒然後相應地給予適當的裝飾。

有什麼建議?謝謝!

如果有使用替代成分的合法選項,您可以做幾件事之一,所有這些都涉及將選項儲存在成分數組中。一種方法是將欄位添加到數組元素中作為“allowedSubstitutions”:“不同的酒”另一種方法是將“成分”轉換為列出可能的不同可接受成分的數組。

但是,如果遇到棘手的馬提尼酒,我強烈建議您單獨存放兩種飲料,一種稱為“馬提尼”,另一種稱為“伏特加馬提尼”,純粹主義者將其稱為“不是真正的馬提尼”:)

真正的關鍵問題是您將如何查詢此集合 - 使用靈活的模式,您使用數據的方式通常會驅動您建構其儲存的方式,而不是相反。

引用自:https://dba.stackexchange.com/questions/46998