MongoDB C# Treiber nicht nach Objekt -ID finden?
Frage
Verwenden von MongoDB C# -Treiber (http://github.com/samus/mongodb-csharp), scheint ich die Daten nicht von ObjectID abrufen kann. Unter dem Befehl, den ich verwende:
var spec = new Document { { "_id", id } };
var doc = mc.FindOne(spec);
Ich habe es auch versucht:
var spec = new Document { { "_id", "ObjectId(\"" + id + "\")" } };
var doc = mc.FindOne(spec);
Beide geben nichts zurück. Wenn ich es von der Mongo -Konsole abfragt, gibt es das erwartete Ergebnis zurück.
Meine Frage ist, unterstützt dieser Fahrer die Suche nach ObjectID tatsächlich?
Vielen Dank..
Lösung
Es unterstützt das Abrufen durch Objekt -ID. Ihre ID -Variable sollte ein OID sein. Ist es der richtige Typ?
Hier ist ein vollständiges Programm, das wird
- Verbindung zu Mongo herstellen
- Fügen Sie ein Dokument ein
- Holen Sie das Dokument mit seiner ID zurück
- Drucken Sie die Details des Dokuments.
// Connect to Mongo
Mongo db = new Mongo();
db.Connect();
// Insert a test document
var insertDoc = new Document { { "name", "my document" } };
db["database"]["collection"].Insert(insertDoc);
// Extract the ID from the inserted document, stripping the enclosing quotes
string idString = insertDoc["_id"].ToString().Replace("\"", "");
// Get an Oid from the ID string
Oid id = new Oid(idString);
// Create a document with the ID we want to find
var queryDoc = new Document { { "_id", id } };
// Query the db for a document with the required ID
var resultDoc = db["database"]["collection"].FindOne(queryDoc);
db.Disconnect();
// Print the name of the document to prove it worked
Console.WriteLine(resultDoc["name"].ToString());
Andere Tipps
var spec = neues Dokument {{"_id", objectId.parse (id)}};
var doc = mc.findone (spec);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow