MongoDB一对一,少数人需要独一无二

时间:2015-11-06 05:01:32

标签: mongodb

我目前正在MongoDB中设计一些东西,我想知道一对一关系的最佳模式是什么。

我的用户文档结构如下:

{
    "email": "some@email.com",
    "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"
       },
    ],
}

我的问题是帐户部分。每个用户只有极少数,因此它似乎是嵌入的理想选择。此外,5%的情况我将需要使用这些ID来检索整个对象,从那时起我可以使用_id字段。

可是:

  1. 我需要确保平台+ ID在所有用户中都是唯一的
  2. 添加时我需要让用户每个platform_id只有一个ID
  3. 问题: 我目前不了解索引和查询的组合,这将有助于我实现这一目标。我如何最好地模拟这个?

1 个答案:

答案 0 :(得分:0)

根据您的要求的上述描述,作为解决方案,您需要创建一个独特的复合索引

请参阅下面提到的示例

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

有关唯一复合索引的更多详细说明,请参阅以下URL中提到的文档

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