問題タブ [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.

0 投票する
2 に答える
106 参照

node.js - RavenDB を使用した「従来の」1 対多クエリ

include-RavenDB の機能を知っています。データベースへの 1 回のラウンドトリップで、参照されているドキュメントをすぐに取得できます。しかし、私の問題は次のとおりです。最初に取得したドキュメントには、「他の」ドキュメントへの参照が含まれていません。ただし、「他の」ドキュメントには現在のドキュメントへの参照があります。

世界中にサイトを持つセットアップを想像してみてください。それぞれsiteがさまざまなアラームをトリガーする可能性があります。それぞれにviaalarmへの参照があります。sitesiteId

ここで、すべてのアラームを含むすべてのサイトのリストを取得したいと思います。しかし、これは 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 withwhere the order is a self contained thing, my

もちろん、逆の方法でもかまいません。include経由ですべてのアラームとサイトを照会しますsitesId。しかし、これはアラームがゼロのサイトを返しません。

これは私の側の単なる設計ミスですか?私は何かを誤解するには?それとも、これを1つのクエリで実行して「n + 1クエリ」を防ぐことはできませんか?