Драйвер MongoDB C # не удается найти по идентификатору объекта? - PullRequest
10 голосов
/ 16 марта 2010

Использование драйвера MongoDB C # (http://github.com/samus/mongodb-csharp), кажется, что я не могу получить данные по ObjectId. Ниже команды, которую я использую:

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

Я тоже пробовал это:

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

Оба ничего не возвращают. Между тем, если я запрашиваю его с консоли Монго, он возвращает ожидаемый результат.

У меня вопрос: поддерживает ли этот драйвер поиск по ObjectId?

Спасибо ..

Ответы [ 2 ]

11 голосов
/ 16 марта 2010

Поддерживает выборку по идентификатору объекта. Ваша переменная 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());
0 голосов
/ 14 апреля 2015

var spec = new Document {{"_id", ObjectId.Parse (id)}};

var doc = mc.FindOne (spec);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...