問題タブ [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.
mongodb - Mongo 集約フレームワーク、ソートしてからグループ化が機能しない
最初に日付でデータを並べ替えてから、別のフィールドでグループ化しようとしています。それは私にはうまくいきません。
私が答えようとしている質問は次のとおりです。最新の個別のcidを選択しますか?
このデータが与えられた場合:
最初にサークルで試合を行い、次に日付で並べ替え、次にcidでグループ化しています
私が得ている結果:
ここに私の分析があります:
日付で照合またはソートする前のデータは次のとおりでした。
日付で並べ替えると、データ セットは次のようになります。
したがって、グループ化した後、私が期待する結果は次のとおりです。
問題を解決するクエリは何ですか?
現在のクエリが機能しないのはなぜですか?
php - 列ごとのMongodbの集計/グループ化と特定の列のカウント
イベントをmongoインスタンスに書き込む基本的なアプリケーションをセットアップしました。書き込み例は次のとおりです。
やりたいことは、URL と特定の event_id の数でグループ化された結果を取得することです。同様に、event_grouping_a は event_ids 1、6、35 で構成され、event_grouping_b は 2、66、103 で構成されます。サンプル出力は次のようになります。
このタイプの集計/グループ化を実行する方法について何か考えはありますか? 最終的な目標は PHP でそれを実現することですが、mongod コンソールでそれを行うのは無駄でした。URL でグループ化することはできますが、単一の親 URL の下に両方のイベント タイプを表示することはできません。次のようなものを吐き出します。
上記の2つは1つにマージする必要がありますが、私の人生ではそれを理解することはできません...何か提案はありますか?
php - MongoDB 集約は PHP では機能せず (または非常に遅く)、シェルでは完全に機能しますか?
コレクション (20M 以上のドキュメントを含む) で集計メソッドを使用しようとしています。
私は最初にWindowsシェルで試しました:
そして、それは完全に機能し、数秒後に結果を返します.
PHPで「翻訳」すると:
タイムアウトの PHP Fatal error が表示されます:
PHP コードを間違えたのか、それとも PHP では shell よりも Aggregate の方がはるかに遅いはずなのかわかりません。
また、「firstname」フィールドにインデックスを追加して、クエリを高速化しました。
ところで、この種の呼び出しのタイムアウトを無限に設定する方法はありますか?
助けてくれてありがとう!
ジョー
mongodb - MongodbAggregationカウント配列/セットサイズ
これが私の問題です:
モデル:
{アプリケーション: "abc"、日付:Time.now、ステータス: "1" user_id:[id1、id2、id4]}
{アプリケーション: "abc"、日付:Time.yesterday、ステータス: "1"、user_id:[id1、id3、id5]}
{アプリケーション: "abc"、日付:Time.yesterday-1、ステータス: "1"、user_id:[id1、id3、id5]}
ある期間のuser_idの一意の数を数える必要があります。
期待される結果:
{アプリケーション: "abc"、ステータス: "1"、unique_id_count:5}
私は現在、集計フレームワークを使用しており、mongodbの外部のIDをカウントしています。
{$ match:{application: "abc"}}、{$ unwind: "$ users"}、{$ group:{_id:{status: "$ status"}、users:{$ addToSet: "$ users"} }}
ユーザーIDの配列が非常に大きいため、日付を繰り返す必要があります。そうしないと、ドキュメントの最大制限(16MB)が取得されます。
$groupbyもできます
{年:{$ year: "$ date"}、月:{$ month: "$ date"}、日:{$ dayOfMonth: "$ date"}
ただし、ドキュメントサイズの制限もあります。
mongodbで設定されたサイズを数えることは可能ですか?
ありがとう
php - PHP での MongoDB 集計、日付/時刻に秒を追加
次のように定義されたMongoDB
集計があります。PHP
問題は、$add
集計関数が機能し$project
ていないことです。
日付/時刻フィールドに任意の秒数を追加する正しい方法は何$executed
ですか?
ありがとう。
mongodb - 配列の長さによる MongoDB 集約フレームワークの並べ替え
次のデータセットがあるとします。
この python/pymongo ソートを MongoDB 集約フレームワークで動作するものに変換するにはどうすればよいですか? 配列内のコード数に基づいて結果を並べ替えていますcodes
。
これはpythonで機能します。MongoDBクエリの終わりで同じ目標を達成する方法を知りたいだけです。
mongodb - MongoDB2.2のMongoDBアグリゲーションフレームワークの$groupはマルチスレッドですか?
MongoDB2.2の集約フレームワークの$group関数がマルチスレッドかどうか疑問に思っています。
この質問のために、私はいくつかの小さなテストを行いました。私が使用したデータセットは、約400万通の電子メールを保存するために使用され、各電子メールの形式は次のとおりです。
1日、1週間、1か月、半年、1年以内にすべてのメールを検索するクエリを設計しました。次に、結果を「ボット」フィールドでグループ化します。
私はそれを行うために集約フレームワークとJavaドライブを使用しています。Javaコードは次のとおりです。
結果は次のようになります。
私が驚いたのは、通常、1年以上のグループは、より多くのレコードが含まれているため、1日よりも遅くなるはずです。(データセット内のレコードは時間とともに均一に分散されます)
db.spams.find({"date":{$ gt:ISODate(xxx)、{$ lt:xxx}}})。countを使用すると、1年のクエリは1日のクエリよりもコストがかかることがわかります。
しかし、$ groupを使用すると、時間範囲を拡大したときにこの関数がほぼ同じ時間かかるのはなぜですか?
アグリゲーションフレームワークがC++であることを知っています、mongodb 2.2を使用していますが、アグリゲーションフレームワークはパフォーマンスを向上させるために複数のスレッドまたは他の方法を使用していますか?
mongodb - Mongodb集計結果のキャッシュ
私はmongodbに、約100 000のドキュメント(シャーディングされていない)を含むかなり大きなコレクションを持っています。これは、基本的にユーザーがこのコレクション内の同じ情報を表示するためにさまざまな方法を参照できるようにするWebアプリケーションのバックエンドです。
ビューの1つとして、集計フレームワークを使用してフィールドの出現回数をカウントしようとしています。これは、コレクション全体を集約することを意味します。問題は、この集計操作(グループ、並べ替え、制限の単純なパイプライン)に2秒かかることです。これは、Webアプリケーションには遅すぎます。
だから私の質問は; この集計操作の結果をキャッシュするための推奨されるソリューションは何ですか?私が見つけた限りでは、新しいコレクションなどに「集約」することはできません。現時点で私が見つけた唯一の解決策は、結果全体を変数に読み込んでから、insertを使用してこの変数を新しいコレクションに挿入することです-しかし、これにはデータベースからアプリケーションに大量のデータを送信することが含まれるのではないかと心配しています=>データベースに戻りますか?
助言がありますか?
パイプラインの例:
スキーマは基本的にこれらの3つのフィールドと、実際には関係のないいくつかのフィールドです。
item_idと3つのフィールドすべてのインデックスを試しましたが、成功しませんでした。
mongodb - Mongo selectが複数のフィールドで異なる + 汎用アーキテクチャ
私は現在 MongoDB を学んでいますが、いくつか問題があります。
プロジェクトでは、SQL を使用していて、Artist、Album、Song の 3 つのテーブルがありました。
それから、行がたくさんあり、また興味があったので、Mongoに変更することにしました...
Mongo では、すべてを含むコレクションソングが 1 つしかありません。
- トラック名
- アーティスト名
- アートワーク
- フォルダ
- アルバム名
- アルバムの日付
まず、この構造が正しいかどうか、または SQL にあった各テーブルのコレクションを作成する必要があるかどうかを知りたいですか? 私の主な目的は、artistName="something" および trackName="something_else" を検索できるようにすることです...単純な検索で、非常に高速に動作します! :)
ただし、すべてのアーティストをリンク (フォルダー) とともに表示するページも必要です。ここに私の問題があります: すべてのアーティストを表示し、artistName の順序で A (たとえば) で始まり、各アーティストのフォルダーを取得します。 ..
私はこれを試しました:
それはうまくいきますが、..が必要folder
です
それから私はこれを試しました:
それは並べ替えなしで機能しますが、並べ替えを使用すると次のエラーが発生します。
だから私の質問は、私が必要とすることを行うための最良の方法は何ですか?
どうもありがとう、バレンティン