3

ASP.NET MVC WebAPI 컨트롤러에서 최신 MongoDB-C# 드라이버를 사용하고 있습니다.Mongodb 업데이트가 오류없이 실패 함

내가 전화 오류 메시지가 나타나지 않습니다 : 내가 (즉, 컨트롤러에 대해 직접 유닛 테스트를 실행하면

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

그러나 영향을받는 문서의보고 수는 0

입니다 그것은 호스팅 아니에요. 또는 어떤 서버에서 실행됩니다. 그냥 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에 대한 호출을 디버깅하는 방법이 있습니까?

정보가 하나 더 있습니다. Azure에서 MongoLab을 사용하여 MongoDB 저장소를 호스팅합니다.

+0

무엇이 당신의 질문입니까? – i3arnon

+3

쿼리가 문서와 일치하지 않는 것 같습니다. –

+0

쿼리를 실행하면 자신이 원하는 데이터를 반환합니다. 동일한 ID를 사용하고 호스팅 된 솔루션을 사용하지 않으면 모든 것이 동일한 mongoDB 인스턴스에 대해 작동한다는 점에 유의하십시오. 개별 호출을 변수로 설정하는 것보다이 문제를 디버깅하는 더 좋은 방법이 있습니까? – dannydwarren

답변

1

테이블의 문서 (개체) 구조를 확인하고 업데이트 할 데이터베이스에 보내는 구조와 일치하는지 확인하십시오.

내 업데이트 ID가 일치하지만 JSON 구조가 일치하지 않습니다. 이로 인해 업데이트가 자동으로 실패하게되었습니다. 그 이유는 확실하지 않지만 모든 문서가 동일한 구조의 편집을 사용하고 있기 때문에 잘 작동합니다.

오래된 문서 구조 (업데이트 실패) :

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

을 따라서 쿼리가 문서를 일치하지만, 문서 구조가 일치하지 않습니다

을 :

{ 
    "_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 
} 

현재 문서 구조를 (업데이트 성공.

관련 문제