具有可更改用户ID的Document的Schema

时间:2015-04-16 16:20:19

标签: mongodb nosql

我从许多计算机上获取了这些数据(我们称之为event),我想将它们放入mongodb

   `event`
   {
    "payload":"xxxxxxxxxxxx",
    "user":{  
      "user_sid":"S-1-5-21-2242820312-3698568055-2602798999-1000",
      "user_login":"john1"
     }
   }

之后,该用户可以更改他的机器,并为他生成新的ID - user_sid

使用新user_sid的新条目

   `event`
   {
    "payload":"xxxxxxxxxxxx",
    "user":{  
      "user_sid":"S-1-5-21-2242820312-3698568055-2602798999-5555",
      "user_login":"john1"
     }
   }

因此,更改后的所有历史数据都无法与新查询相关联。

我有两个想法来解决这个问题:

首先是使collection.users用于保存user_sids并将user._id链接到事件集合。

  1. 当新的user_sid新活动到来时,将添加新用户 新事件将与新的user_sid相关联。

  2. 然后,应用程序用户将能够识别john1已更改user_sid并可以合并这些用户。

  3. 旧的user.user_sid将被新的替换,因此历史数据中的旧_id引用无需更改,新事件将获得_id 更新旧的user.user_sid和新的user.user_sid将是 删除。

  4. 第二个是使collection.users用于保存user_sids但不在event中引用它。 collection.users将为特定用户保留每个新user_sid,并在查询中为该用户设置所有user_sid

    因为我只是从NoSQL开始,我需要建议一个更好吗?

1 个答案:

答案 0 :(得分:0)

我认为您只需将用户_id添加到活动文档中即可:

{
    "payload" : "xxxxx",
    "user" : {
        "user_sid" : "9rjvq835hgq0845uhr",
        "_id" : 1231231231,
        "user_login" : "john1"
    }
}

user_sid字段的路径为user.user_sid。我认为将其称为sid会更好,因为与用户的关联从嵌入中显而易见,并且不需要在名称中重复。