User {
_id: "my_user",
name: "john smith",
email: "blah@test.com,
friends: [
*More Users*
]
}
我会重写朋友的用户数据吗?每次我“添加朋友”时,我是再次输入数据还是“关联”到另一个用户 _id 字段?
您的文档结构应该基于您的数据访问模式,即您的程序访问数据的方式。在您上面给出的示例中,您正在处理一对多的关系,因为许多朋友只会有一个“John Smith”。“John Smith”的朋友可以成为彼此的朋友,您可以通过使用 Friends '_id' 来处理这些朋友,并在您这样做时放置在一个数组中。这将降低修改数据时出现异常的风险。
User1 {
_id: "my_user1",
name: "john smith",
email: "blah@test.com,
friends: [
"my_user2",
"my_user3",
"my_user4",
]
}
User2 {
_id: "my_user1",
name: "john smith",
email: "blah@test.com,
friends: [
"my_user1",
"my_user3",
"my_user4",
]
}
另一种选择是嵌入数据,但这可能导致重复和修改异常,因此应避免,除非出于性能原因需要这样做。