BsonValue и пользовательские классы в драйвере MongoDB C # - PullRequest
13 голосов
/ 12 октября 2011

Я пытаюсь использовать $push в запросе на обновление в mongodb с драйвером c #.

Для метода Update.Push(...) требуется имя строки (это нормально) и значение BsonValue, которое нужно «нажать». Здесь я сталкиваюсь с проблемами. Я пытаюсь вставить не простой тип в массив поля.

Например: { $push : { "arrayfield" : { "a" : 7, "b" : 12 } } }

Это прекрасно работает в консоли Mongo, но я не могу понять, как превратить мой объект в BsonValue. Я попытался BsonValue.Create(myObjectInstance), но это дает мне ошибку, утверждая, что тип .NET не может быть сопоставлен с BsonValue.

Я что-то упустил?

1 Ответ

14 голосов
/ 12 октября 2011

Я знаю два подхода:

  1. Update.PushWrapped<MyObject>("arrayfield", myObjectInstance); // драйвер c #> = 1,0

  2. Или преобразовать свой класс в BsonValue самостоятельно с помощью ToBsonDocument() метода расширения.

    Update.Push("arrayfield", myObjectInstance.ToBsonDocument());

...