3

Я использую последний драйвер MongoDB-C# в контроллере ASP.NET MVC WebAPI.Обновление Mongodb с ошибкой

Я не получаю сообщение об ошибке, когда я называю:

collection.Update(Query<T>.EQ(e => e.Id, entity.Id), 
    MongoDB.Driver.Builders.Update<T>.Replace(entity), WriteConcern.Acknowledged) 

Но заявленное количество документов, изменяемого 0.

Если я бег UnitTest непосредственно против контроллера (т.е. он не принимал. или работать под любым сервером. Просто рассматривайте его как обычный класс, создавая экземпляр контроллера в моем UnitTest), когда я это делаю, все работает так, как ожидалось.

Таким образом, у меня есть только эта проблема, пока мой сайт размещен.

БОЛЬШЕ: Если я создаю новый объект, а затем попытаюсь изменить созданный объект и вызывать код выше, чем это будет успешно выполнено.

Пример: Если я вызываю пост на моем контроллере WebAPI создать объект, который запускает этот код:

MongoConnection.Collection.Insert(value, WriteConcern.Acknowledged) 

И тогда я могу изменить этот объект и вызвать сообщение на мой контроллер WebAPI, который запускает первый блок кода :

collection.Update(Query<T>.EQ(e => e.Id, entity.Id), 
    MongoDB.Driver.Builders.Update<T>.Replace(entity), WriteConcern.Acknowledged) 

Затем обновление завершается успешно.

Спасибо за помощь!

ОБНОВЛЕНИЕ Извините за отсутствие явного вопроса: Я что-то не так? Какие-нибудь идеи для выяснения того, что происходит с реальным провалом? Есть ли способ отладки вызовов в MongoDB?

Еще одна информация. Мы используем MongoLab в Azure для проведения нашего репо MongoDB.

+0

Каков ваш вопрос? – i3arnon

+3

Похоже, что запрос не соответствует документу. –

+0

Когда я запускаю запрос самостоятельно, я возвращаю ожидаемые данные. обратите внимание, что с использованием одного и того же идентификатора и без использования размещенного решения все работает против одного экземпляра mongoDB. Есть ли лучший способ отладить этот материал, чем просто установить индивидуальные вызовы переменных? – dannydwarren

ответ

1

Проверьте структуру документа (объекта) в таблице и убедитесь, что она соответствует структуре, которую вы отправляете в db для обновления.

Идентификатор моих обновлений был сопоставим, но структура JSON этого не сделала. Это привело к сбою обновления. Не уверен, почему это так, но теперь, когда все документы используют одни и те же изменения структуры, отлично работают.

Старый документ Структура (Update Failed):

{ 
    "_id": "54361fb2ab9c1e1b04514731", 
    "Name": "New Name: 10/8/2014 10:40:03 PM", 
    "HomeTown": "Carlsbad", 
    "Ratings": [], 
    "IsArchived": false, 
    "PicturePath": "", 
    "MatchWins": 0, 
    "MatchLosses": 0, 
    "GameWins": 0, 
    "GameLosses": 0, 
    "TotalGames": 0, 
    "Matches": [], 
    "WebcamImage": null 
} 

Текущая структура документа (Update Succeed:

{ 
    "_id": { 
     "$oid": "54362a35ab9c2025287025d2" 
    }, 
    "_t": [ 
     "ModelBase", 
     "Player" 
    ], 
    "Name": "Name Changed: 12/17/2014 8:58:23 PM", 
    "HomeTown": "Carlsbad", 
    "Ratings": [], 
    "PicturePath": "" 
} 

Таким образом, запрос соответствует документ, но структура документа не соответствует

.
Смежные вопросы