2
User {
    _id: "my_user",
    name: "john smith",
    email: "blah@test.com,
    friends: [
      *More Users*
    ]
}

我会重写朋友的用户数据吗?每次我“添加朋友”时,我是再次输入数据还是“关联”到另一个用户 _id 字段?

4

1 回答 1

0

您的文档结构应该基于您的数据访问模式,即您的程序访问数据的方式。在您上面给出的示例中,您正在处理一对多的关系,因为许多朋友只会有一个“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",
  ]
}

另一种选择是嵌入数据,但这可能导致重复和修改异常,因此应避免,除非出于性能原因需要这样做。

于 2013-02-10T09:08:03.413 回答