問題タブ [aggregation-framework]

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

mongodb - 集約フレームワークを使用してすべてのオブジェクトをグループ化する

このようなMongoDBのオブジェクトのコレクションがあります

ここで、すべてのフィールドをいくつかのフィールド (すべてのオブジェクトに存在しない可能性があります) でグループ化した上記のデータを取得し、最も高い created_at 日付で並べ替えたいと考えています。次のクエリで Aggregation Framework を使用してこれを実行しようとしました。

私が直面している問題は、行に関連しています

特定のフィールドを入力すると機能しますが、コレクションに含まれる正確なフィールドはわかりません。しかし、むしろ、オブジェクト全体が次のように返されるようにしたい:

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

node.js - MongoDB集計を使用したカウントと平均の計算

私はこのような単純なdbレイアウトを持っています:

男性と女性のクライアントの数を出力する集計コマンドを作成しようとしています。また、男性と女性の平均年齢も出力したいのですが、同じコマンドでこれを実行できるかどうかはわかりません。 2つの別々のものが必要ですか?

上記のコードで男性/女性のカウントを取得しますが、avgAgeは0になります。何かアイデアはありますか?

どうもありがとう

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

java - イベントごと、日付範囲ごとのユニークな訪問者をサポートする MongoDB データ モデル

複数の Web サイトがあり、各 Web サイトには、追跡したい複数のイベントを「トリガー」する訪問者がいます。すべてのWebサイトからのこれらのイベントのログがあり、各イベントにはWebサイトID、イベント名、およびイベントを実行したユーザーIDが含まれています(簡単にするために、それだけだとしましょう)。

要求事項:

  1. Web サイト ID とイベント名ごとに、何人のユニーク ユーザーがそれを取得したかを取得できます。
  2. これは、日付範囲もサポートする必要があります (範囲内の個別のユニークな訪問者)。

次のデータモデルを使用して、「website-id」ごとにコレクションを作成することを考えていました(例として):

イベント ID を保持するために _id を使用しています。私は、dailyStats._id を使用して、それが発生したときに保持しています (yyyyMMdd 形式の整数)。ユーザーの一意の ID ハッシュを表すために、dailySattes.users._id を使用しています。

一意のユーザーを取得するには、基本的に、指定された日付範囲ごとに、配列内の個別のカウント数のアイテムを実行 (mapreduce?) できる必要があります (日付範囲を yyyyMMdd に変換します)。

私の質問:

  1. このデータモデルはあなたにとって理にかなっていますか? このモデルのスケーラビリティが長期にわたって懸念されます (あるクライアントで 1 日あたりのユニーク ビジター数が多いと、ドキュメントが膨大になります)。_id < [yyyyMMdd としての日付] までに、dailyStats ドキュメントを削除することを考えていました。このようにして、ドキュメントのサイズを適切な数に保つことができますが、それでも制限があります。
  2. まだ作成されていない場合はdailyStatsも作成し、まだ作成されていない場合はユーザーを追加し、両方の「ヒット」プロパティをインクリメントする「upsert」を実行する簡単な方法はありますか?
  3. マップリデュースはどうですか?どのようにアプローチしますか (指定された日付範囲内のすべてのサブドキュメントの users._id で個別に実行する必要があります)? 新しい集計フレームワークを使用した簡単な方法はありますか?

ところで - 一意の訪問者を解決する別のオプションは、Redis ビットマップを使用することですが、複数のデータ ストレージを保持する価値があるかどうかはわかりません (メンテナンスに関して)。

0 投票する
4 に答える
24316 参照

mongodb - mongo集約フレームワークを使用して配列の特定の要素でグループ化する

集計フレームワークを使用して、配列の特定の要素でグループ化することはできますか?

このようなドキュメントでは、次のようになります。

一番好きな食べ物 (つまり、インデックス 0 の食べ物) の個別のリストと、一番好きな食べ物である最も背の高い人の身長を取得できますか?

このようなもの (ただし、配列インデックス アクセスのドット表記が集計フレームワークで機能しないように見えるため、機能しません):

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

mongodb - 配列内のサブドキュメントのMongodb集計

私はバックエンドとしてmongodbを使用して小さなアプリケーションを実装しています。このアプリケーションでは、サブドキュメントの配列を含むフィールドがドキュメントに含まれるデータ構造があります。

私は次のユースケースを基礎として使用します:http: //docs.mongodb.org/manual/use-cases/inventory-management/

例からわかるように、各ドキュメントには、サブドキュメントの配列であるcartedというフィールドがあります。

これは、1つの問題を除いて、私にぴったりです。コレクション全体で各一意のアイテム(一意の識別子キーとして「sku」を使用)をカウントし、各ドキュメントでカウントを1ずつ追加します(同じ「sku」の複数のインスタンス同じドキュメントでも1)がカウントされます。たとえば、この結果が欲しいです:

{sku: '00e8da9b'、doc_count:1}、{sku: '0ab42f88'、doc_count:9}

MongoDBを読んだ後、上記のような複雑なスキーマがある場合に、これを(高速に)行う方法についてかなり混乱しています。他の点では優れたドキュメントが正しいことを理解している場合、そのような操作はおそらく集約フレームワークまたはmap / reduceフレームワークのいずれかを使用して達成される可能性がありますが、ここでいくつかの入力が必要です。

  • 構造の複雑さを考えると、私が探している結果を達成するのに適したフレームワークはどれですか?
  • 選択したフレームワークから可能な限り最高のパフォーマンスを得るには、どのような種類のインデックスが推奨されますか?
0 投票する
1 に答える
4600 参照

mongodb - MongoDB集計クエリ

MongoDBには、次のコレクションがあります。

ユーザーがURLをクリックしたら、Clicks配列にクリック日の日付を追加します。私の質問は、[date1]から[date2]までのクリック数を取得し、UserIDでグループ化するなど、集計クエリを作成するにはどうすればよいですか?をファイルに出力するにはどうすればよいですか?

ありがとう!

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

python - この例でMongodbAggregationを使用するにはどうすればよいですか?

私は現在、MongoDB自体ではなく、Pythonを使用して結果の多くを構築しています。Aggregationに頭を悩ませようとしていますが、少し苦労しています。これは私が現在行っていることの例であり、おそらくMongoDBによってより適切に処理される可能性があります。

私はプログラムのコレクションとエピソードのコレクションを持っています。各プログラムには、それに関連付けられたエピソード(DBRef)のリストがあります。(プログラムとエピソードの両方が非常に複雑で深いため、エピソードは独自のコレクションに保存されます。したがって、埋め込みは実用的ではありません)。各エピソードには期間(フロート)があります。プログラムの平均エピソード期間を知りたい場合は、次のようにします。

プログラムに1000を超えるエピソードがある場合、これはかなり遅くなります。MongoDBでそれを行う方法はありますか?

これがMongoシェル形式のサンプルデータです。同じプログラムに属する3つのエピソードがあります。プログラムの平均エピソード期間を計算するにはどうすればよいですか?

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

mongodb - mongodb 集約フレームワークのパイプラインはどのように機能しますか?

mongodb 集約フレームワークのパイプラインがどのように機能するかについて、根本的な誤解があるかもしれません。私の期待は、各ステップが前のステップの出力を消費することです。http://media.mongodb.org/zips.jsonで提供されているサンプル コレクションを使用した具体的な例を次に示します。

このような結果を生み出します。

ここまでは順調ですね。次に、次を実行して、上記の投影を取得する別のステップを追加することにしました。

プロジェクションは機能しますが、最初の $match ステップは無視されます。これは元の入力に基づいており、状態が != CA であるドキュメントが含まれています。

私の予想は間違っていたのでしょうか、それとも構文の問題を見ずにじっと見つめていたのでしょうか? バージョン 2.2.0 を実行しています。

サンプルクエリは機能しているようです。

前もって感謝します。

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

mongodb - mongodbで加法的属性の比率を計算するには?

サンプルの mongodb 集計コレクション (http://media.mongodb.org/zips.json) を使用して、カリフォルニア州のすべての都市の人口割合を出力したいと思います。

SQL では、次のようになります。

これは、mongodb map/reduce を使用して実行できます。

これは、新しい集計フレームワーク (v2.2) を使用しても実現できますか? これには、map/reduce の場合のように、何らかの形式のグローバル スコープが必要になります。

ありがとう。

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

mongodb - Mongodb Aggregation Framework | ダブルマッチ

これがどのように見えるかです-

  1. 最初の試合は完璧に機能します。
  2. グループは完璧に機能し、私が探しているものを正確に押し出します。
  3. 最後の$matchは機能せず、要求された> = 2ではなく、すべてのカウントが表示されます

'counts'、'$ counts'、 "$ counts"を試しましたが、どれもうまくいきませんでした。