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..

War es hilfreich?

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
scroll top