Ich versuche, ein Dokument in MongoDB 2.4.4 mithilfe des .NET-Treibers aufzustocken. Es scheint nicht automatisch die _id
auf Upserts zu generieren, obwohl es die _id
auf Plain-Einsätze korrekt generiert. Wie kann ich den Treiber veranlassen, den _id
richtig zu erzeugen?MongoDB .NET nicht generieren _id auf Upsert
Hier ist ein kleines Beispiel, das das Problem veranschaulicht.
public class MongoObject
{
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
[BsonRepresentation(BsonType.ObjectId)]
public string MongoID { get; set; }
public int Index { get; set; }
}
var obj = new MongoObject()
{
Index = 1
};
//This inserts the document, but with a _id set to Null
_collection.Update(Query.EQ("Index", BsonValue.Create(1)), Update.Replace(obj), UpdateFlags.Upsert, new WriteConcern() { Journal = true });
//This inserts the document with the expected autogenerated _id
//_collection.Insert(obj);
Ich bin gespannt, wofür der Downvote war? Da jemand zwei andere Fragen, die ich selbst beantwortet habe, einfach durchgegangen ist, möchte ich nur darauf hinweisen, dass dies tatsächlich eine vollständig unterstützte Funktion von StackOverflow ist. Es gibt sogar ein Kontrollkästchen für "Beantworte deine eigene Frage - teile deinen Wissens-Q & A-Stil" im "Frage stellen" -Formular. –
Karma restauriert. Dies ist eine nützliche Frage mit einer nützlichen Antwort. – RobD
Ha, danke @RobD :) –