.Net MongoDB.Driver on Azure Cosmos DB error

381 views Asked by At
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
  },
  ...
  ...
]
0

There are 0 answers