MongoDB C#映射一个项目

MongoDB C#映射一个项目,c#,mongodb,map,reduce,C#,Mongodb,Map,Reduce,我正在使用map/reduce查找文档的最大修订版本 var map = "function() {emit(this.DocName, this.Revision);}"; var reduce = "function (key,values) {return Math.max.apply(Math, values);}"; QueryDocument Query = new QueryDocument("DocName", stFName); var mr = docs.MapRed

我正在使用map/reduce查找文档的最大修订版本

 var map = "function() {emit(this.DocName, this.Revision);}";
 var reduce = "function (key,values) {return Math.max.apply(Math, values);}";
 QueryDocument Query = new QueryDocument("DocName", stFName);
 var mr = docs.MapReduce(Query, map, reduce).Response;
康奈斯先生

{[{ "_id" : "WINWORD8.DOC", "value" : 2.0 }]}
如何使用“value”作为变量

问候


Thomas

对于这样一个简单的请求,Map reduce被认为是过火了

您可以使用InlineResults属性:

docs.MapReduce(Query, map, reduce).InlineResults
这是BsonDocument的可枚举项(在本例中仅为1个文档),并获得第一个结果

但是,我会建议一种更好的方法来找到最大版本,避免地图减少使用:

IMongoSortBy sort = SortBy.Descending("Revision");
IMongoQuery = Query.EQ("DocName", stFName);
BsonValue maxRev = docs.FindAs<BsonDocument>(q).SetFields(new string[] {"Revision"}).SetSortOrder(sort).SetLimit(1).GetFirstOrDefault()
if (maxRev !=null)
    int revMax = maxRev.AsBsonDocument.GetValue("Revision").AsInt32; // <- this is the maximum revision
IMongoSortBy sort=SortBy.Descending(“修订”);
IMongoQuery=Query.EQ(“DocName”,stFName);
BsonValue maxRev=docs.FindAs(q).SetFields(新字符串[]{“修订版”}).SetSortOrder(排序).SetLimit(1).GetFirstOrDefault()
如果(maxRev!=null)

int revMax=maxRev.AsBsonDocument.GetValue(“修订版”).AsInt32;//还有一个绝对初学者的问题:如果我使用InlineResults,我如何访问该值?InlineResults是BsonDocument的可枚举项:取第一个并获取值(“值”)