Mongodb 具有可变用户id的文档的架构
我从许多机器上获得了这样的数据,我们称之为事件,我想把它们放到mongodb中: 稍后,这个用户可以更改他的机器,并为他生成新的id-user\u sid 具有新用户\u sid的新条目Mongodb 具有可变用户id的文档的架构,mongodb,nosql,Mongodb,Nosql,我从许多机器上获得了这样的数据,我们称之为事件,我想把它们放到mongodb中: 稍后,这个用户可以更改他的机器,并为他生成新的id-user\u sid 具有新用户\u sid的新条目 `event` { "payload":"xxxxxxxxxxxx", "user":{ "user_sid":"S-1-5-21-2242820312-3698568055-2602798999-5555", "user_login":"john1"
`event`
{
"payload":"xxxxxxxxxxxx",
"user":{
"user_sid":"S-1-5-21-2242820312-3698568055-2602798999-5555",
"user_login":"john1"
}
}
因此,更改后的所有历史数据不能在查询中与新数据关联
我有两个想法来处理这个问题:
首先是使collection.users用于保存用户\u SID,并将user.\u id链接到事件集合
当出现具有新用户\u sid的新事件时,将添加新用户并
新事件将与新用户\u sid链接
然后,应用程序用户将能够识别john1已更改用户的sid,并可以合并这些用户
旧user.user_sid将替换为新的,因此历史数据中的旧id引用无需更改,新事件将获得_id
将使用更新的旧user.user_sid和新user.user_sid
删除
第二种方法是使collection.users用于保存用户的SID,但在事件中不引用它。collection.users将保留特定用户的每个新用户\u sid,并在查询中放置该用户的所有用户\u sid
因为我刚刚开始使用NoSQL,所以我需要一个更好的建议?我认为您可以在事件文档中添加一个用户id:
{
"payload" : "xxxxx",
"user" : {
"user_sid" : "9rjvq835hgq0845uhr",
"_id" : 1231231231,
"user_login" : "john1"
}
}
用户\u sid字段的路径为user.user\u sid。我认为最好只称它为sid,因为从嵌入的角度看,与用户的关联是显而易见的,不需要在名称中重复 好的,但是,相同用户的事件可以出现,但sid不同。然后我得到了同一个用户的两个user_sid条目。没关系。然后管理员可以注意到这些SID是同一个用户,并将用户文档合并到一个SID中。因此,应更新所有旧用户sid
{
"payload" : "xxxxx",
"user" : {
"user_sid" : "9rjvq835hgq0845uhr",
"_id" : 1231231231,
"user_login" : "john1"
}
}