IList<FilterDefinition<Family>> filters = new List<FilterDefinition<Family>>();
var filter = Builders<Family>
.Filter.Eq(e=>e.id, "Andersen.1");
filters.Add(filter);
var filterPartiion = Builders<Family>
.Filter.Eq(e => e.LastName, "Andersen");
filters.Add(filterPartiion);
var update = Builders<Family>.Update
.Set<Boolean>(e=>e.IsRegistered, true);
var searchOn = Builders<Family>.Filter.And(filters);
collection.UpdateOne(searchOn, update);
Using .net MongoDB.Driver on Azure Cosmos DB, I would like to do an update on the IsRegistered
element of the document based on the the filter of id="Andersen.1"
and LastName="Andersen"
, in which LastName
is partition key. I am new to MongoDB, is my code correct?
I got an error:
"query in command must target a single shard key"
[
{
"id": "Andersen.1",
"LastName": "Andersen",
"Parents": [
{
"FamilyName": null,
"FirstName": "Thomas"
},
{
"FamilyName": null,
"FirstName": "Mary Kay"
}
],
"Children": [
{
"FamilyName": null,
"FirstName": "Henriette Thaulow",
"Gender": "female",
"Grade": 6,
"Pets": [
{
"GivenName": "Fluffy"
}
]
}
],
"Address": {
"State": "WA",
"County": "King",
"City": "Seattle"
},
"IsRegistered": false,
"_rid": "S4UzAMRFRAABAAAAAAAAAA==",
"_self": "dbs/S4UzAA==/colls/S4UzAMRFRAA=/docs/S4UzAMRFRAABAAAAAAAAAA==/",
"_etag": "\"0100d5a1-0000-0000-0000-59b9d8cd0000\"",
"_attachments": "attachments/",
"_ts": 1505351885
},
...
...
]