You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB查询:如何将BsonArray元素转换为C#的List<string>

从MongoDB的BsonDocument中提取Types数组为List

你可以通过以下方式将BsonDocument中的Types字段转换为List<string>:

方法一:基于现有代码扩展

你的现有代码已获取到包含Types数组的BsonDocument,只需补充数组转换逻辑:

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();

// 将BsonArray转换为List<string>
BsonArray typesArray = result["Types"].AsBsonArray;
List<string> typesList = typesArray.Select(element => element.AsString).ToList();

也可以简化为一行代码:

List<string> typesList = result["Types"].AsBsonArray.Select(e => e.AsString).ToList();

方法二:直接投射到List

在查询阶段直接完成投射,跳过中间的BsonDocument对象:

var filter = Builders<BsonDocument>.Filter.Exists("Types", true);
List<string> typesList = collection.Find(filter)
    .Project(Builders<BsonDocument>.Projection.Expression(doc => 
        doc["Types"].AsBsonArray.Select(v => v.AsString).ToList()))
    .First();

关键说明

  • result["Types"]返回的是BsonValue类型,必须通过.AsBsonArray显式转换为BsonArray。
  • 数组内的每个元素是BsonValue类型,使用.AsString可安全转为字符串(前提是元素本身为字符串类型)。若不确定元素类型,可先通过element.IsString判断,避免转换异常。

内容的提问来源于stack exchange,提问作者Emilio Madrigal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:41:26