Ich benutze MongoDb 2.6.10 und verwende C # -Treiber 1.9.2. Der Server verfügt über ein Replikat von zwei Servern.
Meine Dokumente haben das Format. itemId ist einzigartig.
%Vor%Dann habe ich Code, um einen Favoriten des Formulars zu entfernen
%Vor%Nach jedem Mal überprüfe ich das Ergebnis.DocumentsAffected ist gleich 1. Hin und wieder kommt der Wert als 0 zurück. Wenn ich selbst in MongoDB gehe, kann ich das Dokument finden, das der itemID entspricht, und ich kann sehen Die favoriteId, die versucht wurde, im Array zu entfernen, ist immer noch da. result.OK ist wahr, und es gibt keine Fehlerinformationen.
Was könnte dazu führen, dass dies fehlschlägt?
Ich bin kein Experte, aber meine Vermutung ist, Bedenken zu äußern, da es unterschiedliche Sicherheitsstufen für das Schreiben und Aktualisieren von Dokumenten in MongoDB gibt. Siehe Bedenken schreiben
Also anstatt diese Methode zu verwenden:
%Vor%Es könnte besser sein, stattdessen diese Methode zu verwenden:
%Vor%Und geben Sie WriteConcern an
%Vor%Auf diese Weise hat das Update die höchste Garantie.
Es besteht die Möglichkeit, dass, wenn das Dokument bereits vorhanden ist und genau mit dem vorherigen Dokument übereinstimmt, keine Änderungen erforderlich sind und daher die DocumentsAffected-Eigenschaft 0 ist. Sie können die Dokumentation hier sehen: Ссылка . Sie können diese Eigenschaften in der Response-Eigenschaft des Ergebnisses sehen.
Tags und Links c# mongodb mongodb-.net-driver