Скажем, существующий документ в БД выглядит так:
{
"_id": "1",
"settings": {
"languages": [ "english", "french" ]
}
}
Теперь я хочу обновить документ так:
{
"_id": "1",
"settings": {
"languages": [ "korean", "german" ]
}
}
Я устал этот следующий код:
var lan = new List<string> { "finish", "russian", "korean" }
collection.UpdateOne(
Builders<MyObject>.Filter.Eq("_id", "1"),
Builders<MyObject>.Update.Set("settings.languages", lan));
Но получил следующее исключение:
MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer 2[System.Collections.Generic.List
1 [System.String], System.String] 'нельзя преобразовать в тип' MongoDB.Bson.Serialization.IBsonSerializer`1 [System.String]
Я также пытался использовать BsonArray для инициализации массива новых языков:
var bsonArray = new BsonArray
{
"korean",
"german"
};
collection.UpdateOne(
Builders<MyObject>.Filter.Eq("_id", "1"),
Builders<MyObject>.Update.Set("settings.languages", bsonArray));
Обновление может быть выполнено без ошибок, но языкив документе изменено на:
{
"_id": "1",
"settings": {
"languages": "[korean, german]"
}
}
Становится "[ xx, xx ]"
вместо [ "xx", "xx" ]
.Это не то, что я ожидал.