Mongodb 如何设计nosql模式来将用户与;“朋友”;实际上谁是其他用户?
我是否重写朋友的用户数据?每次我“添加朋友”时,我是再次输入数据还是与另一个用户“id”字段“关联”?您的文档结构应基于您的数据访问模式,即您的程序访问数据的方式。在上面给出的示例中,您处理的是一对多关系,因为对于许多朋友,只有一个“约翰·史密斯”。“John Smith”的朋友可以是彼此的朋友,您可以通过使用朋友的“\u id”来处理这些朋友,就像您所做的那样放置在一个数组中。这将降低修改数据时出现异常的风险Mongodb 如何设计nosql模式来将用户与;“朋友”;实际上谁是其他用户?,mongodb,scaling,relation,nosql,Mongodb,Scaling,Relation,Nosql,我是否重写朋友的用户数据?每次我“添加朋友”时,我是再次输入数据还是与另一个用户“id”字段“关联”?您的文档结构应基于您的数据访问模式,即您的程序访问数据的方式。在上面给出的示例中,您处理的是一对多关系,因为对于许多朋友,只有一个“约翰·史密斯”。“John Smith”的朋友可以是彼此的朋友,您可以通过使用朋友的“\u id”来处理这些朋友,就像您所做的那样放置在一个数组中。这将降低修改数据时出现异常的风险 User { _id: "my_user", name: "john
User {
_id: "my_user",
name: "john smith",
email: "blah@test.com,
friends: [
*More Users*
]
}
另一种选择是嵌入数据,但这可能导致重复和修改异常,因此应避免,除非出于性能原因需要这样做 这个问题问得很多。请将此作为启动程序阅读:。没有完美的答案。这取决于你的需要。谢谢。所以我会通过使用两个find()调用来访问一个friends用户的数据,对吗,就像没有办法使用一个一样?您认为使用_id作为用户名而不使用和objectid怎么样?find调用的数量取决于您的应用程序。上面的代码在两个文档之间创建一个链接,以便您知道每个用户的朋友是谁。我的假设是,你有很多用户,其中任何一个都可能是另一个的朋友,这是正确的吗?如果你使用用户名作为id,你可能会得到重复的用户名。在应用程序中,将对象_id指定给一个变量,并使用该变量更新好友数组。@user979663也可能有用
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",
]
}