問題タブ [select-n-plus-1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - RavenDB を使用した「従来の」1 対多クエリ
include
-RavenDB の機能を知っています。データベースへの 1 回のラウンドトリップで、参照されているドキュメントをすぐに取得できます。しかし、私の問題は次のとおりです。最初に取得したドキュメントには、「他の」ドキュメントへの参照が含まれていません。ただし、「他の」ドキュメントには現在のドキュメントへの参照があります。
世界中にサイトを持つセットアップを想像してみてください。それぞれsite
がさまざまなアラームをトリガーする可能性があります。それぞれにviaalarm
への参照があります。site
siteId
ここで、すべてのアラームを含むすべてのサイトのリストを取得したいと思います。しかし、これは RavenDB では不可能ですか? -Documentでは、参照されるドキュメントへの ID (または ID の配列) を保持するinclude
「パス」のみを受け入れるためです。site
これは、インクルードオーダーlineItemsサイトalarmIds
内の配列を提供することで解決できます。このサイトは何年にもわたって実行され、0 から 100 万の間のアラームを収集します。これは私には悪い考えのようです。site'-document and referencing this array in
. But in contrast to a lot of examples featuring stuff like an
with
where the order is a self contained thing, my
もちろん、逆の方法でもかまいません。include
経由ですべてのアラームとサイトを照会しますsitesId
。しかし、これはアラームがゼロのサイトを返しません。
これは私の側の単なる設計ミスですか?私は何かを誤解するには?それとも、これを1つのクエリで実行して「n + 1クエリ」を防ぐことはできませんか?