Unfug
2016-09-07, 20:05:57
Hallo zusammen,
ich habe ein kleines Problem. Und zwar soll an eine existierende Software (Closed Source) an eine Mongodb angeschlossen werden. Das ganz in C#.
Speichern funktioniert soweit auch
collection.InsertOneAsync(ExternesObject.ToBsonDocument());
Problem ist, dass auslesen klappt nicht, da jetzt immer _id mitkommt, welche von der MongoDB automatisch generiert wird.
var collection = database.GetCollection<ExterneClass>("collection");
var filter = Builders<ExterneClass>.Filter.Eq("speziellerkey", key);
var result = await collection.Find(filter).ToListAsync();
Da ich nicht an die Source komme, kann ich die Klassen auch nicht um
BsonIgnoreExtraElements erweitern.
Wie schaffe ich es das Feld _id zu ignorieren?
Danke
Update
Tja , manchmal geht es doch einfacher wenn man statt Google die API von Mongo durchsucht.
BsonDocument.Remove("") war die Lösung.
var collection = database.GetCollection<BsonDocument>("collection");
var filter = Builders<BsonDocument>.Filter.Eq("speziellerkey", key);
var result = await collection.Find(filter).ToListAsync();
Nun kann man einfach
result.FirstOrDefault().Remove("_id");
machen und schwups ist _id weg und lässt sich mittels
BsonSerializer.Deserialize<ExternalClass>(result.FirstOrDefault());
zurück serialisieren.
ich habe ein kleines Problem. Und zwar soll an eine existierende Software (Closed Source) an eine Mongodb angeschlossen werden. Das ganz in C#.
Speichern funktioniert soweit auch
collection.InsertOneAsync(ExternesObject.ToBsonDocument());
Problem ist, dass auslesen klappt nicht, da jetzt immer _id mitkommt, welche von der MongoDB automatisch generiert wird.
var collection = database.GetCollection<ExterneClass>("collection");
var filter = Builders<ExterneClass>.Filter.Eq("speziellerkey", key);
var result = await collection.Find(filter).ToListAsync();
Da ich nicht an die Source komme, kann ich die Klassen auch nicht um
BsonIgnoreExtraElements erweitern.
Wie schaffe ich es das Feld _id zu ignorieren?
Danke
Update
Tja , manchmal geht es doch einfacher wenn man statt Google die API von Mongo durchsucht.
BsonDocument.Remove("") war die Lösung.
var collection = database.GetCollection<BsonDocument>("collection");
var filter = Builders<BsonDocument>.Filter.Eq("speziellerkey", key);
var result = await collection.Find(filter).ToListAsync();
Nun kann man einfach
result.FirstOrDefault().Remove("_id");
machen und schwups ist _id weg und lässt sich mittels
BsonSerializer.Deserialize<ExternalClass>(result.FirstOrDefault());
zurück serialisieren.