現在、私たちがSQL Server上で動作しているため、MongoDB集計フレームワークが私たちのニーズにどれくらい適しているか評価しています。私は、特定のクエリを実行するに苦労しています:mongodb集計フレームワークでcase-statementを実行する
は、私が欲しい
{
name: 'A',
timespent: 100,
},
{
name: 'B',
timespent: 200,
},
{
name: 'C',
timespent: 300,
},
{
name: 'D',
timespent: 400,
},
{
name: 'E',
timespent: 500,
}
(SQLテーブルにとMongoDBのコレクションの完全な文書として列としてモデル化)私は以下の擬似レコードを持っていると言いますタイムゾーンフィールドを範囲にグループ化し、発生をカウントして、たとえば次の擬似レコード:
results{
0-250: 2,
250-450: 2,
450-650: 1
}
注これらの範囲(250、450及び650)は、動的であり、おそらくユーザーにより経時的に変更されること。
select range, COUNT(*) as total from (
select case when Timespent <= 250 then '0-250'
when Timespent <= 450 then '200-450'
else '450-600' end as range
from TestTable) as r
group by r.range
は再び、このSQLはいずれかの時点で利用可能な特定の範囲に合わせて、我々のアプリによって動的に構築されることに注意してください:SQLでは、私たちはこのような何かで結果を抽出します。
私は、mongodb集約フレームワークで適切な構造を見つけてそのようなクエリを実行するのに苦労しています。 1つの範囲の結果をパイプラインに挿入する(つまり、単一の範囲の結果を得る)ことによってクエリを実行できますが、単一のパイプラインクエリですべての範囲とその数を抽出する方法は不可能です。
このリンクはお役に立ちます http://stackoverflow.com/questions/8945766/mongodb-mysql-sum-case-when-equivalent/21700596#21700596 –
http://www.codefari.com/2015 /08/case-statement-in-mongodb-query.html上記の リンクはあなたに役立ちます – Singh