Mongo DB: как $addToSet элемент пользовательского типа с использованием официального драйвера C #

#mongodb #mongodb-.net-driver

#mongodb #mongodb-.net-driver

Вопрос:

У меня есть документ с массивом элементов пользовательского типа:

 {
    _id: 'id',
    name: '',
    customElements: [
        { _id: 'id',
        name: 'name'}
    ]
}
  

В C # у меня есть соответствующие классы:

 public class CustomElement 
{
    [BsonId]
    public ObjectId id { get; set; }
    public string name { get; set; }

    CustomElement ()
    {
        id = ObjectId.GenerateNewId();
    }
}
  

Используя официальный драйвер c #, я пытаюсь создать инструкцию обновления:

 var update = Update.AddToSet("customElements", new CustomElement { name = "name"});
  

Но это показывает, что он не может быть назначен BsonValue. Как преобразовать его и $addToSet?

Ответ №1:

Вариант 1, с помощью обернутых методов, которые поставляются с версией драйвера 1.0:

   Update.AddToSetWrapped<CustomElement>("customElements",  
                      new CustomElement() { name = "name"); //c# driver >= 1.0
  

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

 Update.AddToSet("customElements", new CustomElement() { name = "name"}.ToBsonDocument());
  

Надеюсь, это поможет.