[英]MongoDB C# how to filter documents by multiple distinct fields?
我在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驅動程序
ps我見過這個主題通過Mongo按組對多個不同的字段進行計數,但是我無法使其與C#驅動程序一起使用
我已經這樣解決了:
public List<SymbolItem> GetCompanySymbolItems() {
// https://docs.mongodb.com/manual/reference/operator/aggregation/group/
var result = new List<SymbolItem>();
m_CompanyCollection.Aggregate()
.Group(new BsonDocument("_id",
new BsonDocument {{"symbol", "$symbol"}, {"companyName", "$companyName"}}))
.ToList()
.ForEach(bson => {
var symbolData = bson["_id"];
result.Add(new SymbolItem {
Tag = symbolData["symbol"].AsString,
Name = symbolData["companyName"].AsString
});
});
return result;
}
現在我得到了想要的結果
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.