問題タブ [mongodb-aggregation]

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 投票する
1 に答える
5493 参照

mongodb - mongo 集計 $lookup クエリで配列の最初のフィールドを使用して、ドキュメントを照合します

配列フィールドの 0 番目の値を使用して、Mongo 集計 $lookup クエリを使用して販売ドキュメントで一致を見つけたいと考えています。これが私のクエリです:

結果 :

このクエリは一致を返しますが、チェックすると一致しません。なぜこれが起こっているのかわかりません。クエリから0番目の部分を削除すると、空の配列が返されます。このような:

saleCategoryId も、categorysKey の配列を含む配列フィールドです。

助けてください。

0 投票する
0 に答える
113 参照

mongodb - 異なる集計クエリの結果を組み合わせる

3 つの異なるコレクションに基づく 3 つの異なる MongoDb Aggregate クエリがあり、それぞれが会社のその部門のスコアを計算しているcombine / $project場合、個々の集計結果を保存せずに、クエリを使用して結果を 1 つの結合されたエグゼクティブ レポートにする方法を教えてください。

本質的に、異なるコレクションに対して並列集計パイプライン クエリを実行し、中間結果を保存せずに最終パイプラインで結果を結合できますか?

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

mongodb - MongoDB 集約パイプラインの問題

私は mongoDB を初めて使用し、集約パイプラインについて理解するのに苦労しています。

株式取引に関する情報を保持するデータベースを作成しました。私のポートフォリオ コレクションの 1 つのドキュメントを簡略化したバージョンでは、次のようになります。

]

そのため、毎日、運用資産 (オウム) と現在の価格で保持しているすべてのポジションのリストを追跡しています。私がしなければならないことは、ポートフォリオの毎日の純および総エクスポージャーをオウムのパーセンテージとして計算することです。ネットエクスポージャーは単純に次のとおりです。

sum(shares*price*fx)/aum

すべての株の上。総エクスポージャーは次のとおりです。

abs(shares*price*fx)/aum

(負のポジションはショート ポジションを意味します)。集計フレームワークを使用して、これを単一のクエリとして実行する必要があります。私は多くのクエリを試しましたが、どれもうまくいかないようで、暗闇の中をさまよっているだけです. 誰でもガイダンスを提供できますか?

私のクエリは次のようになります

クエリは実行されますが、計算された値はゼロです。すべてのデータを 2 次元のテーブルにフラット化する必要があるため、投影が期待どおりに機能しません。

0 投票する
1 に答える
26038 参照

mongodb - MongoDB - $group を使用して $lookup の後に $unwind ネストされた配列を巻き戻す

MongoDB のアグリゲーションは、刻一刻と指数関数的に複雑になります!

私は、ネストされた配列に関しては、巻き戻されたネストされた配列から各オブジェクトのby theを$unwind実行します。私の最後の試みは、で巻き戻しを元に戻すことです。ただし、元の埋め込み配列を、元のプロパティ名と、各ドキュメントの残りの元の直接のプロパティと共に再構築することはできません。$lookup_id$group

これまでの私の試みは次のとおりです。

私が得るものは次のようなものです:

この結果には 2 つの問題があります。

  1. 元のネストされた配列に対して単一の要素配列が返されたため、結果universitiesはそれぞれ 1 つのオブジェクトの配列の配列になります。オブジェクトの単なる配列である必要があります。$lookup$profile.universities
  2. 結果universitiesは、 の下にネストされた元の場所に配置されprofilesます。演算子profile.universitiesを使用しているため、オリジナルがそのままである理由はわかっています。$firstこの背後にある私の意図はprofile、元のネストされたuniversities配列を保持することと併せて、 の元のプロパティをすべて保持することです。

最終的に、私が必要とするのは次のようなものです:

$groupこれを達成する代わりに使用できる別の演算子はありますか? それとも、目的を$group間違って理解していますか?

編集:これはコンテキストの元の投稿です: Mongo $lookup が左外部結合の場合、一致しないドキュメントが除外されるのはなぜですか?