MongoDB C# Driver incapaz de encontrar por ID do objeto?
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..
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