2016-12-02 1 views
2
public async Task SomeWork() 
     { 
      Debug.WriteLine("SomeWork for User : " + Context.User.Identity.Name); 
      var userProfile = await UserProfileCollection.Find(u => u._id == Context.User.Identity.Name).FirstOrDefaultAsync(); 

      userProfile.SuccessfullConnect = true; // currently false 
      var up = await UserProfileCollection.FindOneAndReplaceAsync(u => u._id == userProfile._id, userProfile); 
      Debug.WriteLine(ObjectDumper.Dump(userProfile)); 
      Debug.WriteLine(ObjectDumper.Dump(up)); 
      Debug.WriteLine("Saved SomeWork for User : " + Context.User.Identity.Name); 
     } 

다음은 디버그 출력입니다. 내 문서가 교체되지 않습니다. SuccessfullConnect 변수가 여전히 false인지 확인하십시오. 서버에서 문서를 교체하지 않았는지 확인했습니다. 그리고 언젠가 그것의 일하는 그리고 언젠가는 작동하지 않습니다.C# Mongodb FindOneAndReplace 또는 ReplaceOne이 작동하지 않습니다.

SomeWork for User : +919933221101 
{TestSignalR_Server.Models.UserProfile} 
    _id: "+919933221101" 
    ... 
    SuccessfullConnect: True 
    ... 

{TestSignalR_Server.Models.UserProfile} 
    _id: "+919933221101" 
    ... 
    SuccessfullConnect: False 
    ... 

Saved SomeWork for User : +919933221101 

답변

2

방법 FindOneAndReplaceAsync은 정상적으로 작동합니다.
기본적으로이 메서드는 원본 문서를 반환합니다. 변경 후 문서를 보려면 ReturnDocumentReturnDocument.After으로 변경할 수 있습니다.

var options = new FindOneAndReplaceOptions<Profile> 
{ 
    ReturnDocument = ReturnDocument.After 
}; 
var up = await collection.FindOneAndReplaceAsync<Profile>(u => u._id == userProfile._id, userProfile, options);