복붙노트

[MONGODB] MongoDB를 C #을 드라이버 2.0 - 업데이트 문서

MONGODB

MongoDB를 C #을 드라이버 2.0 - 업데이트 문서

나는 현재 MongoDB를 C #을 드라이버 2.0 내 코드를 업그레이드 그리고 난 업데이트 문서에 코드를 업그레이드하는 문제에 봉착했습니다.

나는 이런 식으로 뭔가를 할 수 있었다 이전 버전을 사용 :

MyType myObject; // passed in 
var collection = _database.GetCollection<MyType>("myTypes");
var result = collection.Save(myObject);

나는 새 버전에서이 작업을 수행 할 수있는 방법을 찾기 위해 사투를 벌인거야. 내가 좋아하는 하나의 필드를 업데이트하는 몇 가지 예를 발견했다

var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var update = Builders<MyType>.Update.Set(s => s.Description, description);
var result = await collection.UpdateOneAsync(filter, update);

나는 방법 저장과 이전 버전에서 수행 된 모든 필드를 업데이트하고 싶습니다.

어떤 아이디어?

감사합니다 많이합니다

해결법

  1. ==============================

    1.난 당신이 ReplaceOneAsync ()를 찾고 생각 :

    난 당신이 ReplaceOneAsync ()를 찾고 생각 :

    MyType myObject; // passed in 
    var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
    var result = await collection.ReplaceOneAsync(filter, myObject)
    
  2. ==============================

    2.간단한 ReplaceOneAsync 저장도 문서를 삽입합니다으로 저장 일치하지 않는 문서를 업데이트 수행하는 동안 업데이트를 찾을하지 않은 경우, mnemosyn의 대답에 추가합니다.

    간단한 ReplaceOneAsync 저장도 문서를 삽입합니다으로 저장 일치하지 않는 문서를 업데이트 수행하는 동안 업데이트를 찾을하지 않은 경우, mnemosyn의 대답에 추가합니다.

    ReplaceOneAsync와 같은 동작을 달성하면 매개 변수 옵션을 사용해야합니다 :

    MyType myObject; 
    var result = await collection.ReplaceOneAsync(
        item => item.Id == id, 
        myObject, 
        new UpdateOptions {IsUpsert = true});
    
  3. ==============================

    3.당신은 다음과 같은 LINQ를 사용할 수 있습니다 :

    당신은 다음과 같은 LINQ를 사용할 수 있습니다 :

    await context.collection.ReplaceOneAsync(b=> b.Id == item.Id,item);
    
  4. from https://stackoverflow.com/questions/30257013/mongodb-c-sharp-driver-2-0-update-document by cc-by-sa and MIT license