代码之家  ›  专栏  ›  技术社区  ›  spkvn

如何避免不一致的嵌入文档

  •  1
  • spkvn  · 技术社区  · 7 年前

    在理解何时以及为什么在mongo数据库中使用嵌入式文档时有点困难。

    inconsistent embed

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

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

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

    像往常一样,如果我是个十足的白痴,请告诉我。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Markus W Mahlberg    7 年前

    你做得太过分了。考虑到您提出的问题,用例是

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

    {
      _id: 1001,
      beds: 2
    }
    

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

    和预订

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

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

    所以根据你最初的问题:嵌入在这里不是必要的,imho。

    推荐文章