2011-12-27 4 views
1

나는 10Gen 공식 C# 드라이버를 사용하고 있으며 직접 RunCommand 메서드를 사용하고 CommandResult를 얻지 만 deserialize 할 수는 없습니다.CommandResult를 deserialize하는 방법은 무엇입니까?

var commandResult = db.RunCommand(command); 

list<Post> posts = ??// how to deserialize to posts collection 

답변

1

정보를 더 제공 할 수 있습니까? 어떤 명령을 실행하고 있습니까?

은 아마 당신은 당신이 대신 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); 
+0

나는 actualy 새로운 통합 프레임 워크 파이프 라인 그래서 난 다른 방법을 사용할 수 없습니다입니다 명령을 실행하고 있습니다. – AnyOne

관련 문제