【发布时间】:2021-10-21 15:23:35
【问题描述】:
我知道 RavenDB 的include-特性。它允许我在一次往返数据库的过程中立即获取引用的文档。但我的问题是:我首先获取的文档不包括对“其他”文档的引用。但是“其他”文档引用了当前文档。
想象一下我们在世界各地都有站点的设置。每个site 都可能触发各种警报。每个alarm 都通过siteId 引用site。
现在我想获取所有站点的列表,包括所有警报。但看起来,这对 RavenDB 来说是不可能的吗?由于include 仅接受site-Document 中的“路径”,该路径包含引用文档的id(或id 数组)。
这可以通过在site'-document and referencing this array in include. But in contrast to a lot of examples featuring stuff like an orderwithlineItemswhere the order is a self contained thing, mysite` 中提供一组alarmIds 来解决,该数组将运行多年,收集0 到100 万之间的警报。这对我来说似乎是个坏主意。
当然我可以反过来:通过sitesId 查询所有警报和include 站点。但这不会返回警报为零的站点。
所以这只是我的设计错误吗?我误解了什么?还是不能在一个查询中执行此操作并防止“n+1 查询”?
【问题讨论】:
标签: node.js nosql ravendb select-n-plus-1