【问题标题】:Query MongDB with indirect relationship between collections使用集合之间的间接关系查询 MongoDB
【发布时间】:2013-04-15 09:47:07
【问题描述】:

在我的模型设计中,场地和门票之间没有直接的关联。 Venues 与 Deals 是一对多的关系,而 Deals 与门票是一对多的关系。

场地 -> 优惠 -> 门票

这可能是一个愚蠢的问题,但我想要一个 Tickets.findByVenueId() 操作。查询并确保这一切都发生在服务器端的最有效方法是什么?我需要在 Ticket 模型中对 VenueId 进行某种引用吗?

我在 Node 上使用 MongooseJS。

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    我肯定会在每张票中都有一个 VenueId。这是能够按场地查询门票的唯一“理智”方式。

    虽然这可以被视为非规范化,但有时您必须在 NoSQL 数据库中执行此操作,在这种情况下,无论如何它都不是“麻烦”的非规范化,因为该字段不应该有任何更新(票证不t 发布后更改场所),因此无需担心过时副本和数据完整性。

    根据您的需要,您甚至可以在票证中包含其他场地数据(例如城市名称或场地容量),以方便进行更复杂的查询。显然,这使您远离“规范化”数据库,因此仅在需要时应用。我要画的第一条大线是这些复制的字段需要更新的时候,因为这可能会涉及很多。

    【讨论】:

    • 谢谢蒂洛。我一直在考虑这个问题,我想知道将交易作为子文档添加到场地是否会更有效,而门票将是交易的子文档。对此有什么想法吗?
    • 假设您有很多票,那将无法扩展。你现在拥有的似乎很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多