我正在尝试使用聚合功能后显示/列出数据,但是没有发生.
I am trying to display/list data after using aggregation function but it isn't happening.
此代码绝对可以正常工作.
This code works absolutely fine.
var connectionstring = "mongodb://localhost:27017"; var client = new MongoClient(connectionstring); var db = client.GetDatabase("school"); var col = db.GetCollection<BsonDocument>("students"); var filter = new BsonDocument("type", "homework"); var filter2 = Builders<BsonDocument>.Filter.Eq("scores.type", "homework"); var myresults = await col.Find(filter2) .Limit(2) .Project("{name:1,scores:1,_id:0}") .Sort("{score:1}") .ToListAsync(); foreach (var result in myresults) { Console.WriteLine(result); }此代码获取文档,但是当我替换
This code fetches document as it should however when I replace
var myresults = await col.Find(filter2) .Limit(2) .Project("{name:1,scores:1,_id:0}") .Sort("{score:1}") .ToListAsync();与此
var myresults = await col.Aggregate() .Unwind("{$scores}") .Group(new BsonDocument { { "_id", "$_id" }, { "lowscore", new BsonDocument("$min", "$scores.score") } }) //.Group("{_id:'$_id',lowscore:{$min:'$scores.score'}}") .ToListAsync();没有记录被提取. 我不想使用管道方法.我只想显示通过聚合函数获得的结果.
No record is being pulled. I do not want to use Pipeline method. I simply want to display the result obtained via aggregate function.
这是我的Mongo查询(我想要与C#中的结果相同)-
This is my Mongo Query (I want the same result as this in C#)-
db.students.aggregate([{$sort:{_id:-1}},{$unwind:"$scores"},{$group:{_id:"$_id", lowscore:{"$min":"$scores.score"}}}])推荐答案
这是错误的... {$scores}甚至不是有效的json.从$unwind指令中删除花括号和美元符号.
This is wrong... {$scores} isn't even valid json. Remove the curly braces and the dollar sign from the $unwind directive.
参数名称是字段,因此您需要为其提供字段名称.
The parameter name is field, so you need to provide a field name to it.
更多推荐
C#中的MongoDB聚合函数
发布评论