MongoDB C # pilote Impossible de trouver par ID de l'objet?
Question
Utilisation MongoDB pilote C # ( http://github.com/samus/mongodb-csharp), semble que je suis incapable d'obtenir les données par ObjectId. En dessous de la commande que j'utilise:
var spec = new Document { { "_id", id } };
var doc = mc.FindOne(spec);
J'ai aussi essayé ceci:
var spec = new Document { { "_id", "ObjectId(\"" + id + "\")" } };
var doc = mc.FindOne(spec);
Les deux ne reviennent. Pendant ce temps, si je l'ai requête à partir de la console mongo, il renvoie le résultat attendu.
Ma question est, est-ce que pilote supporte effectivement la recherche par ObjectId?
Merci ..
La solution
Il ne supporte par ID d'aller chercher l'objet. Votre variable id doit être un OID. Est-ce le bon type?
Voici un programme complet qui sera
- Connectez-vous à Mongo
- Insérer un document
- Fetch le document en arrière en utilisant son ID
- Imprimer les détails du document.
// 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());
Autres conseils
spec var = new document {{ "_id", ObjectId.Parse (id)}};
var doc = mc.FindOne (SPEC);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow