簡體   English   中英

如何使用 C# 將 MongoDB 集合中所有文檔的鍵值求和

[英]How to sum the value of a key across all documents in a MongoDB collection with C#

我知道這個問題已經存在

https://stackoverflow.com/questions/4621300/how-to-sum-the-value-of-a-key-across-all-documents-in-a-mongodb-collection

但在那個線程中沒有 c# 答案代碼,所以我想重新問同樣的問題

這是我在 mongodb 中的收藏

[{
  "_id": {
    "$oid": "5f310a3e644ddd24c86c961f"
  },
  "user_no": "USR-123123",
  "user_name": "Andrew Franklyn",
  "balance": 500000,
  "domicile": "Bali"
},{
  "_id": {
    "$oid": "5f310a9c9a71032c605176ba"
  },
  "user_no": "USR-9931021",
  "user_name": "Franklyn CJ",
  "balance": 304040,
  "domicile": "Bali"
},{
  "_id": {
    "$oid": "5f310abe9a71032c605176bb"
  },
  "user_no": "USR-42294",
  "user_name": "Jonathan Joestar",
  "balance": 123000,
  "domicile": "New York"
}]

在此處輸入圖像描述

我想總結所有關鍵余額值並將其放入一個變量中,但我不知道該怎么做

請幫忙

因此,為簡單起見,讓我們將一些精簡的文檔放入我們將使用的 MongoDB 集合中。

> db.test.insertMany([{
   "balance": 500000,
 },{
   "balance": 304040,
 },{
   "balance": 123000,
 }]
 )

就像您分享的其他 StackOverflow 帖子一樣,我們需要按階段運行一個聚合管道。

var client = new MongoClient();

var db = client.GetDatabase("test");
var collection = db.GetCollection<Data>("test");

var result = await collection.Aggregate()
    .Group(data => "",
        grouping => new
        {
            Sum = grouping.Sum(y => y.Balance)
        })
    .ToListAsync();

var sum = result.FirstOrDefault()?.Sum ?? 0;

// Sum: 927040
Console.WriteLine($"Sum: {sum}");

它們只會是聚合管道返回的一項或一項,這樣我們可以使用一些 Linq 來獲取文檔,如果集合中沒有任何內容,則默認為 0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM