Sigo recibiendo este error:
System.AgregateException: se produjeron uno o más errores. (El comando findAndModify falló: después de aplicar la actualización, se encontró que el campo (inmutable) '_id' se modificó a _id: BinData(3, 000000000000000000000000000000000).) —> MongoDB.Driver.MongoCommandException: el comando findAndModify falló: después de aplicar el actualización, se descubrió que el campo (inmutable) '_id' se modificó a _id: BinData (3, 000000000000000000000000000000000).
No estoy tratando de cambiar el _id, solo estoy filtrando en id. El registro/documento con el que actualizo el documento anterior no tiene identificación. Solo quiero actualizar todos los demás campos/claves.
El código:
public T UpsertRecord<T>(string table, Guid id, T record) { var collection = db.GetCollection<T>(table); var filter = Builders<T>.Filter.Eq("_id", id); Task task = collection.FindOneAndReplaceAsync<T>(filter, record, new FindOneAndReplaceOptions<T, T> { IsUpsert = true }); task.Wait(); return record; }A continuación se muestran los datos que intento publicar/actualizar()responsePerson.Id:
//Update data const string testNameUpdate = "MrSnail"; const int testTotalUpdate = 2; var testPersonUpdate = new TestObj { name = testNameUpdate, total = testTotalUpdate }; var responseUpdate = _mongoDBFeedClient.UpsertRecord(collectionName, responsePerson.Id, testPersonUpdate);He probado el método replaceone y tal.
Estoy usando Atlas Cloud Mongo DB y está "fragmentado". No sé si tiene algo que ver con esto, pero podría ser. No quiero cambiar la identificación, solo actualice el resto de los valores de identificación del documento, si no es así, quiero crearlo.