Mongodb C# драйвер не может найти идентификатором объекта?
Вопрос
Использование драйвера MongoDB C# (http://github.com/samus/mongodb-csharp), кажется, что я не могу получить данные по объектному. Ниже команды, которую я использую:
var spec = new Document { { "_id", id } };
var doc = mc.FindOne(spec);
Я также попробовал это:
var spec = new Document { { "_id", "ObjectId(\"" + id + "\")" } };
var doc = mc.FindOne(spec);
Оба ничего не возвращают. Между тем, если я запрошу это из консоли Mongo, он возвращает ожидаемый результат.
Мой вопрос: поддерживает ли этот драйвер поиск ObjectId?
Спасибо..
Решение
Он поддерживает извлечение с помощью идентификатора объекта. Ваша переменная ID должна быть OID. Это правильный тип?
Вот полная программа, которая будет
- Подключиться к монго
- Вставьте документ
- Забрать документ обратно, используя свой идентификатор
- Распечатайте подробности документа.
// 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());
Другие советы
var spec = new Document {{"_id", objectId.parse (id)}};
var doc = mc.findone (spec);
Не связан с StackOverflow