PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MongoDb _id


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.

Gast
2016-09-07, 21:14:11
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

.net reflactor zum dekompilieren nutzen
http://www.red-gate.com/products/dotnet-development/reflector/