MongoDB (с драйвером C #), есть ли журнал? - PullRequest
0 голосов
/ 28 июля 2011

Хотелось бы узнать, есть ли какие-нибудь журналы, когда вы пытаетесь, например, вставить что-то в поле Имя документа Customer. Но имя поля было переименовано в mongodb для FirstName ?

Поскольку я только что попробовал что-то подобное, я переименовал имя каждого поля с именем Имя в FirstName моей коллекции документов Customer. И в моем коде C # у меня есть запрос, который работал, он удаляет клиента с именем «Джон». Я выполняю его, запрос выполняется без ошибок, но в базе данных ничего не происходит. Это должно сказать мне, что поле Имя больше не существует. Как вы это обнаружили?

Спасибо. John

[EDIT] мой код C #:

public void DeleteOverride(Guid applicationId, string settingKey, string name)
{
   var query = Query.And(Query.EQ("_id", applicationId), Query.EQ("Settings.Key", settingKey));
   var update = Update.Pull("Settings.$.Overrides", new BsonDocument {{"Name", name}});
   Run(database => database.GetCollection<ApplicationViewModel>("Applications").Update(query, update));
 }

Вот в моем примере: поле Имя было переименовано для DefinedFor в базе данных для всех документов моей коллекции Application, я запускаю его, и никаких исключений не было выдано. В моей визуальной студии включены исключения CLR.

Ответы [ 2 ]

1 голос
/ 02 августа 2011

MongoDB - это база данных без схемы, поэтому не существует такой вещи, как ошибка «поле больше не существует». Любое поле может существовать или не существовать, поэтому его отсутствие не является ошибкой.

Будущая версия драйвера C # будет поддерживать LINQ, который будет отлавливать некоторые ошибки во время компиляции, а также обрабатывать сопоставление имени свойства C # с именем элемента BSON, что должно помочь избежать большинства несовпадений.

1 голос
/ 28 июля 2011

Нет такого журнала. Вам следует позаботиться о переименовании полей.

Вы можете написать модульный тест для каждого обновления, чтобы убедиться, что обновления работают правильно и выявлять проблемы с переименованиями.

Полагаю, что имена строк в запросах / обновлениях являются самой слабой стороной официального драйвера.

...