Tôi đang cố cập nhật một hàng trong bộ sưu tập MongoDB (đã nhập) bằng trình điều khiển C#. Khi xử lý dữ liệu của bộ sưu tập cụ thể loại MongoCollection<User>
, tôi có xu hướng tránh truy xuất dữ liệu nhạy cảm từ bộ sưu tập (muối, mật khẩu băm, v.v.)MongoDB: chỉ cập nhật các trường cụ thể
Bây giờ tôi đang cố gắng cập nhật phiên bản User
. Tuy nhiên, tôi chưa bao giờ thực sự lấy dữ liệu nhạy cảm, vì vậy tôi đoán dữ liệu này sẽ là default(byte[])
trong trường hợp mô hình đã truy xuất (theo như tôi có thể biết) trước khi tôi áp dụng sửa đổi và gửi dữ liệu mới cho bộ sưu tập.
Có lẽ tôi đang giám sát điều gì đó tầm thường trong trình điều khiển C# MongoDB C# làm cách nào tôi có thể sử dụng MongoCollection<T>.Save(T item)
mà không cập nhật các thuộc tính cụ thể như User.PasswordHash
hoặc User.PasswordSalt
? Tôi có nên truy xuất bản ghi đầy đủ trước, cập nhật các thuộc tính "an toàn" ở đó và ghi lại không? Hoặc là có một tùy chọn ưa thích để loại trừ một số lĩnh vực từ bản cập nhật?
Cảm ơn trước
Cảm ơn đã chỉ ra rằng. Nhưng vấn đề cơ bản của tôi vẫn tồn tại: Tôi muốn cập nhật tất cả các thuộc tính từ 'MongoCollection' đã nhập của tôi với các giá trị của một thể hiện của 'T', ngoại trừ một nhóm trường đã biết cụ thể. Một cái gì đó dọc theo dòng 'Update .EverythingFrom (someObject) .Except (x => x.ExceptThis) .Except (x => x.ExceptThat)' –
Manny
Đây là công việc tùy chỉnh bạn cần viết (EverythingFrom ..) . Không quá khó để làm ở phía khách hàng, bằng cách đi bộ BsonMemberMap và nhận được tất cả các thành viên được ánh xạ, sau đó chỉ xây dựng một Update.Set() từ mỗi nếu bạn biết rằng giá trị thay đổi. Nó không được đảm bảo mạch lạc vì DB có thể đã thay đổi kể từ khi bạn đọc bản ghi vào bộ nhớ mặc dù. –