#c# #mongodb #mongodb-.net-driver
#c# #mongodb #mongodb-.net-driver
Вопрос:
как я могу вставить документ внутри другого документа с помощью mongodb?
Я пробовал что-то вроде приведенного ниже кода, но у меня всегда возникает проблема с преобразованием моего списка настроек в настройках поля:
var settingViewModels = new[]{ setting };
var query = Query.EQ("Name", applicationName);
var update = Update.AddToSet("Settings", BsonArray.Create(setting));
db.Collection<Applications>().Update(query, update, UpdateFlags.Upsert, SafeMode.True)
Я получил сообщение об ошибке при преобразовании моих settingViewModels в BsonArray со словами:
.NET введите MyProject.SettingViewModel не может быть отображен в BsonType.Имя параметра массива: значение
Есть идеи?
спасибо , Джон
Комментарии:
1. Каков тип установочной переменной?
2. вот объект настройки: открытый класс SettingViewModel { открытый идентификатор Guid { get; set; } открытый строковый ключ { get; set; } открытое строковое значение { get; set; } }
Ответ №1:
Если вы хотите добавить элемент настройки в массив Settings[] коллекции приложений, вам следует использовать ToBsonDocument()
метод расширения из MongoDB.Bson
пространства имен:
var update = Update.AddToSet("Settings", setting.ToBsonDocument());
Вам не нужно создавать BsonArray
.
Комментарии:
1. Привет, я попробовал ваше решение и получаю новую ошибку: Safemode обнаружил ошибку: Не удается применить модификатор $ addToSet к не-массиву (ответ: { «err» : «Не удается применить модификатор $ addToSet к не-массиву», «code»: 12591, «n»: 0, «connectionId»: 1174, «ok»: 1 }) Вот моя копия-вставка вашего кода: var query = Query.EQ(«Имя», ApplicationName); var update = Обновить. addToSet(«Настройки», настройка. ToBsonDocument()); db.Collection<Приложения>().Update(запрос, обновление, флаги обновления. Выполнить Upsert, безопасный режим. Верно)
2. @JohnSmith: Это потому, что поле «Настройки» не является массивом в вашем документе приложения, но должно быть .. Можете ли вы обновить свой вопрос примером документа «Приложение»?
3. Эндрю, ты король mongodb