Pregunta

Uso del controlador MongoDB C# (http://github.com/samus/mongodb-csharp), parece que no puedo obtener los datos de ObjectId. Debajo del comando que estoy usando:

var spec = new Document { { "_id", id } };
var doc = mc.FindOne(spec);

También probé esto:

var spec = new Document { { "_id", "ObjectId(\"" + id + "\")" } };
var doc = mc.FindOne(spec);

Ambos no devuelven nada. Mientras tanto, si lo considero desde la consola Mongo, devuelve el resultado esperado.

Mi pregunta es, ¿ese controlador realmente admite la búsqueda de ObjectID?

Gracias..

¿Fue útil?

Solución

Apoya la búsqueda de ID de objeto. Su variable de identificación debe ser un OID. ¿Es del tipo correcto?

Aquí hay un programa completo que

  • Conéctese a Mongo
  • Insertar un documento
  • Recuperar el documento usando su identificación
  • Imprima los detalles del documento.

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

Otros consejos

var spec = nuevo documento {{"_id", objectId.Parse (id)}};

var doc = mc.findone (spec);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top