우리의 앱에는 mongoDB 데이터베이스에 연결된 사용자 모델이 있습니다. 내 질문에 대한 주어진 사용자 데이터 (물론 사용자 ID를 사용하여) 내에서 키/값 쌍의 값을 수정 에 대한 것입니다.MongoDB와 Asp Core는 전체 모델 대신 키 : 값 쌍만 업데이트합니다.
우리의 응용 프로그램에public class User
{
[BsonId]
public string Id { get; set; }
public string email { get; set; } = string.Empty;
public bool hasAcceptedTerms { get; set; } = false;
public int state { get; set; } = 0;
public int UserId { get; set; } = 0;
public IList<UserFile> SubmittedFiles { get; set; }
}
public class UserFile
{
public int fileID { get; set; }
public bool hasFile { get; set; }
}
후 첫 로그인 후, 우리가 사용 몽고 데이터베이스에 자신의 항목을 만들
public async Task AddUser(User item)
{
await _context.Users.InsertOneAsync(item);
}
을 처음으로 사용자를 인증 : 여기
내 간단한 모델입니다 우리는 그가 수락 한 사실을 업데이트하고 싶습니다. 이렇게함으로써hasAcceptedTerms
을 true
으로 변경하고 state
키를 0에서 1
으로 옮기고 싶습니다. 우리의 저장소에서 잠시 동안 우리는 같은 것을 가지고 public async Task<UpdateResult> UpdateUser(string id, User item)
{
return await _context.Users
.ReplaceOneAsync(n => n.Id.Equals(id)
, item
, new UpdateOptions { IsUpsert = true });
}
을하지만, 그렇게함으로써 우리는 우리의 모델에 해당하는 모든 항목을 제공해야합니다. 그의 OBJECTID ID로 식별되는 사용자에 대한 올바른 값을 수정하는 것입니다 예를 호출 UpdateUserData('user1objectidhash', 'hasAcceptedTerms', true)
를 들어
UdateUserData(string id, string data, bool newvalue);
:
내가처럼 사용할 수있는 함수를 만들 수있는 방법을 찾을 수 없습니다.
- 첫 번째 문제 : 는/독특한 솔루션 좋은 생각
string
로data
를 입력됩니다? 데이터 키를 문자열로 입력하면 내 함수 호출이 우아하지 않습니다. - 2nd : 내가 수정하고 싶은 데이터가 무엇인지에 따라 달라 지므로 newvalue의 유형이 무엇인지 알 수 없습니다. 모델에서 감지 할 수 있습니까?
- 3rd : 이 업데이트를 처리 할 수있는 올바른 Mongo.Driver 기능을 알지 못합니다.
몇 가지 힌트와 조언을 제공해 주시겠습니까?
가능성과 의미 것을, 당신의
IMongoCollection<User>
입니다 [mongoDb 및 asp.net 코어의 업데이트 작업]의 복제본 (http://stackoverflow.com/questions/41483648/update-operation-in-mongodb-and-asp-net-core) – Tseng검색 기능 사용 방법은 어떻습니까? 몇 시간 전에 ** 정확한 ** 질문에 답했습니다. – Tseng