1
我正在使用10Gen官方的C#驅動程序,我直接使用RunCommand方法並獲取CommandResult,但我無法反序列化。如何反序列化CommandResult?
var commandResult = db.RunCommand(command);
list<Post> posts = ??// how to deserialize to posts collection
我正在使用10Gen官方的C#驅動程序,我直接使用RunCommand方法並獲取CommandResult,但我無法反序列化。如何反序列化CommandResult?
var commandResult = db.RunCommand(command);
list<Post> posts = ??// how to deserialize to posts collection
你能提供更多的信息嗎?你在運行什麼命令?
也許你只是想查詢職位集合,在這種情況下,你應該使用的FindAll方法來代替:
var server = MongoServer.Create("mongodb://localhost/?safe=true");
var database = server["test"];
var collection = database.GetCollection<Post>("posts");
var posts = collection.FindAll().ToList();
[編輯]
基於低於您的評論您正在使用的聚集框架(它尚未發佈,但在主開發分支上可用)我可以提供一些額外的信息。
C#驅動程序尚不支持新的聚合框架,但由於它基於命令,所以即使在驅動程序正式支持它之前也可以使用它。關鍵是瞭解CommandResult公開通過Response屬性返回的原始BSON文檔,然後知道如何挑選響應。例如:
var commandResult = collection.RunCommand(aggregationCommand);
var response = commandResult.Response;
foreach (BsonDocument result in response["results"].AsBsonArray)
{
// process result
}
在上面的循環中,結果變量的類型是BsonDocument。假設這個BsonDocument是郵政的一個實例的一個有效的序列化,你可以反序列化這樣的:
var post = BsonSerializer.Deserialize<Post>(result);
我actualy執行新的聚合框架管道命令,所以我不能夠使用其他方法。 – AnyOne 2011-12-28 15:10:01