0
を使用して最大のレコードを検索そこのような文書であると仮定しますTemplate
としてクラスにforeachの項目はmongodbcsharpドライバに
{
"_id": "1cf2080c-ce9a-367b-93ba-dbf7b2bf8a2c",
"template_id" : "1cf2080c-ce9a-367b-93ba-dbf7b2bf8a2c",
"some_value" : 12
}
マッピングが、そしてれるtemplateId配列array_id = ["aa", "bb", "cc"]
質問与えられた:方法をTemplate
mongodb C#driver2.1を使用してリストを取得できますか?リスト内の各アイテムは最大でsome_value
ですか?
例えばコレクションがあります:
{"_id": "1", "template_id": "aa", "some_value":1}
{"_id": "2", "template_id": "aa", "some_value":2}
{"_id": "3", "template_id": "aa", "some_value":3}
{"_id": "4", "template_id": "bb", "some_value":4}
{"_id": "5", "template_id": "bb", "some_value":5}
とtemplate_id_array = ["aa", "bb"]
は結果を期待している:
{"_id": "3", "template_id": "aa", "some_value":3}
{"_id": "5", "template_id": "bb", "some_value":5}
私はそれはいくつかの "集約" だと思うか、「MAP-減らします"手続きのように、最初に一致した結果をテンプレートIDでグループ化し、グループごとに最大値を見つけます。私はこれをテストしていませんが、
var result = new List<Template>();
foreach (var element in template_id_array)
{
var filter = builder.Eq("TemplateId", element);
var doc = await collection.Find(filter)
.SortByDescending(x => x.SomeValue)
.Limit(1)
.FirstOrDefaultAsync();
result.Add(doc);
}
は、その後、あなたが最終的な形にそれをシリアライズすることができ、いくつかの可能性の修正で動作するはず
申し訳ありませんが私のポイントを明確にしないために、実際に私が希望LONGQではなく、ただ一つの行でmongodb "sql like"のようなクエリを使うのが好きです –