[英]MapReduce output C# reading mongoDB
public class myType
{
public int key1;
public int key2;
public int val1;
public int val2;
public int val3;
};
當我將myType
對象插入集合時,閱讀沒有問題。 只是:
collection.FindAs<myType>(query);
獲取對象:
"key1":key1, "key2":key2, "val1":val1, "val2":val2, "val3":val3
但是在mapreduce(鍵構造為兩個字段的組合)之后,輸出集合的結構稍有修改。 就像是
"_id" {"key1" : key1, "key2": key2}, "value" : {"val1":val1, "val2":val2, "val3":val3}
從輸出集合讀取對象的方法是什么?
有了輸出集合后,就可以像其他任何集合一樣對其進行查詢。 但是,由於結構不同,您將無法使用相同的C#類來執行此操作。 因此,您要么需要將其作為BsonDocument讀取,要么創建如下所示的幾個新類:
public class Keys
{
[BsonElement("key1")]
public int Key1;
[BsonElement("key2")]
public int key2;
}
public class values
{
[BsonElement("val1")]
public int Val1;
[BsonElement("val1")]
public int Val2;
[BsonElement("val1")]
public int Val3;
}
public class MapReduceOutput
{
[BsonId]
public Keys Keys;
[BsonElement("values")]
public Values Values;
}
然后,您可以執行以下操作:
collection.FindAs<MapReduceOutput>(query);
希望這可以幫助。
通過m / r結果,每個結果都很簡單,應該可以快速工作(至少比自動反序列化更快):
var result = RunMapReduce(..);
foreach (var item in result.InlineResults)
{
var id = item["_id"].AsBsonDocument;
var value = item["value"].AsBsonDocument;
var obj = new myType();
obj.key1 = id["key1"].AsInt32;
//and so on
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.