使用集合之间的间接关系查询MongoDB

时间:2013-04-15 01:42:26

标签: mongodb mongoose

在我的模型设计中,场地和门票之间没有直接的联合。场地与交易是1对多的关系,交易是与门票的1对多关系。

场地 - >优惠 - >车票

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

我在Node上使用MongooseJS。

1 个答案:

答案 0 :(得分:1)

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

虽然这可以被认为是非规范化,但你有时必须在NoSQL数据库中这样做,在这种情况下,它不是一个“麻烦”的非规范化,因为不应该对该字段进行任何更新(门票不要在发布场地后更改场地),因此不存在过时副本和数据完整性的问题。

根据您的需求,您甚至可能会将其他场地数据包含在故障单中(例如城市名称或场地容量),以便进行更复杂的查询。显然,这会使您远离“规范化”数据库,因此仅在需要时应用。我要绘制的第一个重要的一点就是需要更新这些复制的字段,因为这可能会非常复杂。

相关问题