gpt4 book ai didi

c# - MongoDB C#如何按多个不同的字段过滤文档?

转载 作者:行者123 更新时间:2023-12-05 00:59:47 24 4
gpt4 key购买 nike

我在 MongoDB 中有一份公司股票价格列表。每个文档如下所示:

{
"_id":"5b93f2719c02f096d5cb9608",
"dateString":"2018-09-07",
"close":260.87,
"companyName":"Adobe Systems, Inc.",
"high":263.67,
"low":257.12,
"open":258,
"symbol":"ADBE",
"timestamp":1536296400
}

当然,数据库中有很多这样的文档。我需要以不同的方式获取符号和公司名称的列表,例如我想要这个:

List<BsonDocument> {
{ "symbol": "ADBE", "companyName": "Adobe Systems, Inc." },
{ "symbol": "MCO", "companyName": "Moody's Corp" }
...
}

我找到了一种只为一个字段获取不同值的方法,如下所示:

public List<string> GetCompanySymbolNames() {
return m_CompanyCollection.Distinct<string>("symbol", new BsonDocument())?.ToList();
}

但是有没有办法通过 2 个字段进行不同的过滤?这是一个 C# mongodb 驱动程序

附言我看过这个话题count multiple distinct fields by group with Mongo但我无法让它与 C# 驱动程序一起工作

最佳答案

也许你可以使用聚合函数:

例如,我的收藏:

enter image description here

代码:

 var dist = dbCollection.Aggregate().Group(d => d.Name, o =>
new
{
Name = o.Key,
Data = o.Select(_ => _.Symbol).Distinct(),
}).ToEnumerable();

dist.ToList().ForEach(_ =>
{
_.Data.ToList().ForEach(d => Console.WriteLine("Company: " +_.Name + " Symbol: " + d));
}
);

结果:

enter image description here

关于c# - MongoDB C#如何按多个不同的字段过滤文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52458070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com