Sto testando MongoDB (server v 2.6.7) con il driver C# 2.0.MongoDB (server v 2.6.7) con C# driver 2.0: Come ottenere il risultato da InsertOneAsync
Quando sto usando la funzione di inserimento InsertOneAsync
per un documento con un _id
che esiste Mi aspetto un errore come quello che si ottiene dalla shell Mongo:
WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb.Commands.$_id_ dup key: { : 0.0 }" }})
Ma il problema è che l'inserto con il driver C# non genera un'eccezione e non riesco a trovare lo WriteResult
per l'inserto. Quando guardo nel database sembra che non sia successo niente.
Quindi la mia domanda è cosa aspettarsi da InsertOneAsync
quando si inserisce uno _id
esistente?
Il codice in Visual Studio:
IMongoCollection<BsonDocument> commandsCollection = db.GetCollection<BsonDocument>("Commands");
var bson = new BsonDocument
{
{"_id", i.Value},
{"label", i.Key}
};
commandsCollection.InsertOneAsync(bson);
Ma come posso rilevare la chiave duplicata? InsertOneAsync restituirà un'attività senza parte risultato. E Wait restituirà un vuoto. – Fredrik
Grazie. Solamente un'altra cosa. Come posso trovare le informazioni chiave duplicate in una MongoWriteException? 'catch (AggregateException e) { e.Handle ((x) => { se (x è MongoWriteException) {} return true; });' – Fredrik
@Fredrik veda la risposta aggiornata. – JohnnyHK