반응형
MongoDBC# 드라이버 2.0 - 문서 업데이트
현재 MongoDBC# 드라이버 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);
이전 버전에서 했던 것처럼 모든 필드를 저장 방법으로 업데이트하려고 합니다.
무슨 생각 있어요?
정말 감사해요.
당신이 찾고 있는 것 같습니다.ReplaceOneAsync()
:
MyType myObject; // passed in
var filter = Builders<MyType>.Filter.Eq(s => s.Id, id);
var result = await collection.ReplaceOneAsync(filter, myObject)
니모신의 대답에 덧붙이자면, 간단한 것은.ReplaceOneAsync
해당되지 않는 문서를 업데이트합니까?Save
~하듯이Save
또한 업데이트할 문서를 찾지 못한 경우 문서를 삽입합니다.
에서 동일한 동작을 수행하는 경우ReplaceOneAsync
옵션 매개 변수를 사용해야 합니다.
MyType myObject;
var result = await collection.ReplaceOneAsync(
item => item.Id == id,
myObject,
new UpdateOptions {IsUpsert = true});
LINQ는 다음과 같이 사용할 수 있습니다.
await context.collection.ReplaceOneAsync(b=> b.Id == item.Id,item);
사용하다ObjectId.Parse(id)
var filter = Builders<MyType>.Filter.Eq(s => s.Id, ObjectId.Parse(id));
var update = Builders<MyType>.Update.Set(s => s.Description, description);
var result = await collection.UpdateOneAsync(filter, update);
언급URL : https://stackoverflow.com/questions/30257013/mongodb-c-sharp-driver-2-0-update-document
반응형
'programing' 카테고리의 다른 글
인코딩이 없는 ASP.NET MVC 레이저 렌더 (0) | 2023.05.25 |
---|---|
Azure AD B2C - 역할 관리 (0) | 2023.05.25 |
gitbash로 폴더를 변경하는 방법은 무엇입니까? (0) | 2023.05.25 |
virtualenwrapper 및 Python 3 (0) | 2023.05.25 |
부트스트랩 모달에 포함된 경우 Select2가 작동하지 않습니다. (0) | 2023.05.25 |