how to do by mongodb update only specific fields

mongodb update only specific fields  using -'c#,mongodb,mongodb-csharp'

I am trying to update a row in a (typed) MongoDB collection with the C# driver. When handling data of that particular collection of type MongoCollection<User>, I tend to avoid retrieving sensitive data from the collection (salt, password hash, etc.)

Now I am trying to update a User instance. However, I never actually retrieved sensitive data in the first place, so I guess this data would be default(byte[]) in the retrieved model instance (as far as I can tell) before I apply modifications and submit the new data to the collection.

Maybe I am overseeing something trivial in the MongoDB C# driver how I can use MongoCollection<T>.Save(T item) without updating specific properties such as User.PasswordHash or User.PasswordSalt? Should I retrieve the full record first, update "safe" properties there, and write it back? Or is there a fancy option to exclude certain fields from the update?

Thanks in advance

asked Sep 24, 2015 by jekbishnoi
edited Oct 19, 2015 by rajesh
0 votes

1 Answer

0 votes

Save(someValue) is for the case where you want the resulting record to be or become the full object (someValue) you passed in.

You can use

var query = Query.EQ("_id","123");
var sortBy = SortBy.Null;
var update = Update.Inc("LoginCount",1).Set("LastLogin",DateTime.UtcNow); // some update, you can chain a series of update commands here



Using FindAndModify you can specify exactly which fields in an existing record to change and leave the rest alone.

You can see an example here.

The only thing you need from the existing record would be its _id, the 2 secret fields need not be loaded or ever mapped back into your POCO object.

answered Sep 24, 2015 by sujata naik