Pergunta

Usando o driver MongoDB C# (http://github.com/samus/mongodb-csharp), parece que não consigo obter os dados do ObjectId. Abaixo do comando que estou usando:

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

Eu também tentei o seguinte:

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

Ambos retornam nada. Enquanto isso, se eu a consultar do console Mongo, ele retornará o resultado esperado.

Minha pergunta é: esse driver realmente suporta a pesquisa do ObjectId?

Obrigado..

Foi útil?

Solução

Ele suporta buscar o ID do objeto. Sua variável de identificação deve ser uma OID. É o tipo correto?

Aqui está um programa completo que vai

  • Conecte -se a Mongo
  • Insira um documento
  • Buscar o documento de volta usando seu id
  • Imprima os detalhes do 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());

Outras dicas

var spec = novo documento {{"_id", objectid.parse (id)}};

var doc = mc.findone (spec);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top