【问题标题】:How to retrieve values from an array in MongoDB using C#如何使用 C# 从 MongoDB 中的数组中检索值
【发布时间】:2014-09-23 14:52:25
【问题描述】:

下面的代码以 BsonArray 的形式检索元素。我只想从数组中获取数值并使用该值来计算总和。

var fields = "secondary.amount";
    foreach (var document in collection.FindAllAs<BsonDocument>().SetFields(fields))
    {
        foreach (string name in document.Names)
        {
            BsonElement element = document.GetElement(name);                  
            Console.WriteLine("{0}", element.Value);
        }
    }

我尝试将 bson 元素转换为 int64、int32、double,然后使用数值进行加法,但出现运行时错误,无法转换 bsonarray 等。有谁知道如何解决这个问题?

【问题讨论】:

  • 您是否犯了错误并粘贴其他问题的代码:stackoverflow.com/questions/25995286/…? :)
  • 如果你有 bsonarray 则将其转换为数组,而不是简单的类型如 int 和 double
  • @razon,另一个问题也是我的,但这个问题不同,这个问题是一个延续..,所以你在上面的代码中看到的这个 BsonElement 实际上是一个 BsonArray
  • 您的文档在服务器中是什么样的?而且,正如@razon 所说,如果它是 BsonArray,则先将其转换为 BsonArray ...
  • @CraigWilson - 我在找到解决方案时回答了它,它现在可以工作了.. !!非常感谢!!

标签: c# mongodb mongodb-.net-driver mongodb-query


【解决方案1】:

我通过进行以下更改找到了解决方案,现在它可以工作了:

foreach (BsonDocument nestedDocument in Document["name"].AsBsonArray)
                        {
                            Total += Convert.ToDouble(nestedDocument["amount"]);
                        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多