C# MongoDB -获取BsonArray中的所有元素

nbnkbykc  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(213)

我有一个集合,其中包含一个包含BsonArray的文档。

{
  "_id": {
    "$oid": ""
  },
  "Types": [
    "Type 1",
    "Type 2",
    "Type 3"
  ]
}

我想获取“Types”中的所有“Type”值,这样我就可以在C#中创建一个字符串列表,我可以获取包含Types数组的文档,但我无法创建列表,因为我得到的结果是BsonElement类型。
这是目前为止我的代码

var filter = Builders<BsonDocument>.Filter.Exists("Types", true);
var projection = Builders<BsonDocument>.Projection.Include("Types").Exclude("_id");
var result = collection.Find(filter).Project(projection).First();

投影看起来是有效的,因为我得到的结果是这样的,但是我不能得到列表中的元素。

Types=["Type 1", "Type 2", "Type 3"]
8zzbczxx

8zzbczxx1#

如果我没有误解您的问题,您正试图从BsonArray转换为List<string>
使用 * System.Linq * 将每个BsonValue转换为string类型,并以List<string>类型输出结果。

using MongoDB.Bson;
using System.Collections.Generic;
using System.Linq;

List<string> types = ((BsonArray)result["Types"]).Values
    .Select(x => x.AsString)
    .ToList();

相关问题