我从许多计算机上获取了这些数据(我们称之为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链接到事件集合。
当新的user_sid
新活动到来时,将添加新用户
新事件将与新的user_sid相关联。
然后,应用程序用户将能够识别john1已更改user_sid
并可以合并这些用户。
旧的user.user_sid将被新的替换,因此历史数据中的旧_id引用无需更改,新事件将获得_id 更新旧的user.user_sid和新的user.user_sid将是 删除。
第二个是使collection.users用于保存user_sids但不在event
中引用它。 collection.users将为特定用户保留每个新user_sid
,并在查询中为该用户设置所有user_sid
因为我只是从NoSQL开始,我需要建议一个更好吗?
答案 0 :(得分:0)
我认为您只需将用户_id
添加到活动文档中即可:
{
"payload" : "xxxxx",
"user" : {
"user_sid" : "9rjvq835hgq0845uhr",
"_id" : 1231231231,
"user_login" : "john1"
}
}
user_sid
字段的路径为user.user_sid
。我认为将其称为sid
会更好,因为与用户的关联从嵌入中显而易见,并且不需要在名称中重复。