Ich teste MongoDB (Server v 2.6.7) mit dem C# -Treiber 2.0.MongoDB (Server v 2.6.7) mit C# -Treiber 2.0: So erhalten Sie das Ergebnis von InsertOneAsync
Wenn ich mit der Insert-Funktion InsertOneAsync
für ein Dokument mit einem _id
, das ich einen Fehler wie das erwarte existiert Sie von der Mongo Shell erhalten:
WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb.Commands.$_id_ dup key: { : 0.0 }" }})
Aber das Problem ist, dass der Einsatz mit dem C# -Treiber keine Ausnahme auslöst und ich den WriteResult
für den Einsatz nicht finden kann. Wenn ich in die Datenbank schaue, scheint nichts passiert zu sein.
Also meine Frage ist, was von InsertOneAsync
beim Einfügen eines vorhandenen _id
zu erwarten?
Der Code in Visual Studio:
IMongoCollection<BsonDocument> commandsCollection = db.GetCollection<BsonDocument>("Commands");
var bson = new BsonDocument
{
{"_id", i.Value},
{"label", i.Key}
};
commandsCollection.InsertOneAsync(bson);
Aber wie erkenne ich den doppelten Schlüssel? InsertOneAsync gibt einen Task ohne Ergebnisteil zurück. Und Wait wird eine Leere zurückgeben. – Fredrik
Danke. Nur noch eine Sache. Wie finde ich die doppelten Schlüsselinformationen in einer MongoWriteException? 'catch (Aggregate e) { e.Handle ((x) => { if (x MongoWriteException) { } return true ist; });' – Fredrik
@Fredrik aktualisiert Antwort See. – JohnnyHK