MongoDB C# Driver Unable to Find by Object ID?

It does support fetching by object ID. Your id variable should be an Oid. Is it the correct type?

Here is a complete program that will

  • Connect to Mongo
  • Insert a document
  • Fetch the document back using its ID
  • Print the document's details.

// 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());

Tags:

C#

Nosql

Mongodb