Unable to cast object of type 'MongoDB.Bson.Serialization.Serializers.BsonValueSerializer' to type 'MongoDB.Bson.Serialization.IBsonSerializer'PullFilter를 사용하여 배열 요소를 삭제할 때 예외가 발생했습니다.
C# 드라이버 (2.2.4 또는 2.3.0)를 사용하여 MongoDB에서 하위 문서 목록에서 끌어 오기를 시도하는 중입니다.
이 내가 업데이트를 수행하는 방법입니다
FilterDefinitionBuilder<Event> filter = new FilterDefinitionBuilder<Event>();
UpdateDefinitionBuilder<Event> update = new UpdateDefinitionBuilder<Event>();
_eventRepo.FindAndUpdate(filter.Eq("EventId", eventid),
update.PullFilter("Documents", filter.Eq("DocId", docid)));
호출 된 저장소 방법이있다
{
"_id" : ObjectId("5825f74919c55e0c9c4727ee"),
"EventId" : "1234-5789",
"Documents" : [
{
"DocId" : "07c03673-c572-4f56-aaad-0edb52b3a06c",
"Name" : "test.pdf"
}
]
}
그리고 :
public void FindAndUpdate(FilterDefinition<T> filter, UpdateDefinition<T> update)
{
_context.Collection<T>().FindOneAndUpdate(filter, update);
}
이 같은 MongoDB를 문서 모습입니다 예외는 내가 얻는다 :
구현이/IBsonSerializer
(
Documentation)를 상속하기 때문에 0
An exception of type 'System.InvalidCastException' occurred in MongoDB.Driver.dll but was not handled in user code
Additional information: Unable to cast object of type 'MongoDB.Bson.Serialization.Serializers.BsonValueSerializer' to type 'MongoDB.Bson.Serialization.IBsonSerializer`1[MongoDB.Bson.BsonDocument]'.
Stack trace:
at MongoDB.Driver.PullUpdateDefinition`2.Render(IBsonSerializer`1 documentSerializer, IBsonSerializerRegistry serializerRegistry)
at MongoDB.Driver.MongoCollectionImpl`1.CreateFindOneAndUpdateOperation[TProjection](FilterDefinition`1 filter, UpdateDefinition`1 update, FindOneAndUpdateOptions`2 options)
at MongoDB.Driver.MongoCollectionImpl`1.FindOneAndUpdate[TProjection](FilterDefinition`1 filter, UpdateDefinition`1 update, FindOneAndUpdateOptions`2 options, CancellationToken cancellationToken)
는 예외는 이해가되지 않습니다, 그래서 Render
가 BsonValueSerializer
을 할 수 있어야한다 기대.
분명히 이것은 C# BSon 드라이버의 FindOneAndReplace
메서드 안에 있습니다. 이것은 운전자의 버그입니까, 아니면 제가 잘못하고 있습니까?
나는 같은 방식으로 당기기를하는 사람들 (here)을 찾았습니다. 매우 비슷한 문제 (here)가있는 것으로 확인되었지만 해결 방법과 토론으로 해결할 수 없습니다.