2015-11-06 32 views
0

我目前正在MongoDB中設計一些東西,我不知道最好的模式是一對多關係。MongoDB一對多,其中很少需要是唯一的

我的用戶文檔結構是如下:

{ 
    "email": "[email protected]", 
    "gender": "M", 
    "name": "Some Name", 
    "locale": "en_US", 
    "timezone": "UTC +8", 
    "country": "China", 
    "accounts":[ 
     { 
      "platform_id" : NumberLong(1), 
      "id" : "556as1234432bb" 
     }, 
     { 
      "platform_id" : NumberLong(2), 
      "id" : "82378437BA98" 
     }, 
    ], 
} 

我的問題是賬目的一部分。每個用戶只有很少的人,所以它似乎是嵌入的完美人選。此外,我需要使用這些ID檢索整個對象的情況有5%,從這一點我可以使用_id字段。

但是:

  1. 我需要確保該平臺+ id爲所有用戶
  2. 當添加我需要一個用戶擁有每個平臺_id只有一個ID唯一

問題: 我目前不理解索引和查詢的組合,這些將幫助我實現這一點。我如何最好地模擬這個?

回答

0

根據您的要求,上述的描述,因爲它的解決方案,你需要創建一個獨特的複合指數

只是指如下面提到

db.user.createIndex({ "accounts.platform_id": 1, "accounts.id": 1 }, { unique: true }) 

更詳細的說明的例子關於獨特的複合指數請參考以下URL中提到的文件

https://docs.mongodb.org/manual/tutorial/create-a-unique-index/

+0

這是否會在整個系列中獨一無二?我如何確保問題的第二部分? –

+0

@JeroendeLau唯一索引將在整個集合中創建索引字段的唯一組合 –

+0

@JeroendeLau此答案不解決第二個要求。但是,這應該在應用程序方面處理。把邏輯放在它所屬的地方。 ;) –