我使用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'作为变量?
此致
托马斯
答案 0 :(得分:2)
Map reduce可能被视为过度杀伤。
您可以使用InlineResults属性:
docs.MapReduce(Query, map, reduce).InlineResults
这是BsonDocument的可枚举(在本例中仅为1 doc)并获得第一个结果。
但我建议找一个更好的方法来找到最大修订版,避免使用map reduce:
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
如果你想最终获得所有文件的最高版本,那么mapreduce是一个很好的电话。