C# MongoDB Driver调用Distinct()获取集合键值返回游标而非数组
解决方法
C# MongoDB Driver v2.13版本中,Distinct()方法执行后默认返回游标对象而非直接返回结果集,你可以通过调用对应扩展方法将游标转换为数组格式。
同步调用方案
直接在Distinct()方法后追加ToArray()扩展方法即可得到int类型数组:
var settings = MongoClientSettings.FromConnectionString("<connectionstring>"); var dbClient = new MongoClient(settings); var database = dbClient.GetDatabase("players"); var newcollec = database.GetCollection<BsonDocument>("sampleplayer"); FieldDefinition<BsonDocument, int > field = "Salary"; // 追加ToArray()得到整数数组 int[] test = newcollec.Distinct(field, new BsonDocument()).ToArray();
如果需要List<int>类型,将ToArray()替换为ToList()方法即可。
异步调用方案
如果你的项目采用异步编程模式,使用异步重载配合ToArrayAsync()方法:
var settings = MongoClientSettings.FromConnectionString("<connectionstring>"); var dbClient = new MongoClient(settings); var database = dbClient.GetDatabase("players"); var newcollec = database.GetCollection<BsonDocument>("sampleplayer"); FieldDefinition<BsonDocument, int > field = "Salary"; // 异步调用获取整数数组 int[] test = await newcollec.DistinctAsync(field, new BsonDocument()).ToArrayAsync();
上述两种方式都会拉取游标中的所有Distinct结果,转换为你预期的集合格式。
内容的提问来源于stack exchange,提问作者pythonDON
相关产品推荐
相关产品推荐

