1

在理解何时以及为什么在 mongo 数据库中使用嵌入式文档时遇到了一些麻烦。

想象一下,我们有三个集合:用户、房间和预订。

嵌入不一致

对于这样的情况,我有几个问题:

1)您将如何更新嵌入的文档?应用程序开发人员是否有责任将 kevin 的所有实例作为嵌入式文档查找并更新它?

2)如果解决方案是使用文档引用,那是否和关系数据库连接一样重?这只是示例不适合 Mongo 的一个例子吗?

像往常一样让我知道我是不是一个彻头彻尾的白痴。

4

1 回答 1

1

恕我直言,你做得过火了。鉴于您的用例问题是

  • 对于给定的预订,哪个用户预订了哪个房间?
  • 对于给定的用户,他或她的详细信息是什么?
  • 给定房间提供多少张床位?

我会选择以下房间模型

{
  _id: 1001,
  beds: 2
}

为用户

{
   _id: new ObjectId(),
   username: "Kevin",
   mobile:"12345678"
 }

和预订

{
   _id: new ObjectId(),
   date: new ISODate(),
   user: "Kevin",
   room: 1001
}

现在,在预订概览中,您可以通过简单地查询预订来获得所有相关信息(“谁”、“何时”和“哪个”),而无需任何开销来回答您的用例的第一个问题。在预订详细信息视图中,诚然,您必须进行两次查询,但它们在适当的索引下速度很快,并且根据您的技术,也可以异步完成。请注意,我使用房间号作为 id 保存了一个索引。如何回答剩下的问题应该是显而易见的。

因此,根据您最初的问题:恕我直言,这里不需要嵌入。

于 2017-10-16T08:32:03.393 回答