MongoDB и C #. Как запросить все документы, соответствующие списку заданных значений идентификаторов? - PullRequest
1 голос
/ 18 августа 2011

Я настроил свою базу данных так, чтобы свойство идентификатора моего класса было идентификатором документа:

BsonClassMap.RegisterClassMap<TestClass>(cm =>
{
    cm.AutoMap();
    cm.SetIdMember(cm.GetMemberMap(c => c.ID));
});

Чтобы запросить конкретный документ, я могу успешно использовать:

collection.FindOneById(123);

Однако, если я попробую эквивалент в качестве запроса:

collection.FindOne(Query.EQ("ID", 123));

Результаты не возвращаются.

Как включить идентификатор документа в качестве части запроса и / или как запросить список документов, соответствующих заданному набору идентификаторов? Нужно ли буквально запрашивать их один за другим?

EDIT Для пояснения, я не говорю о внутреннем идентификаторе объекта, назначенном MongoDB, я говорю об идентификаторе, назначенном пользователем в качестве уникального ключа / идентификатора, идентифицирующего этот документ для последующего поиска.

1 Ответ

2 голосов
/ 18 августа 2011

Если вы говорите о внутреннем идентификаторе, который использует MongoDB, это, в частности, BsonObjectId, и его нужно запрашивать как единое целое.Кроме того, поле ID для документов MongoDB строчное и начинается с подчеркивания: _id Код, подобный этому, должен работать:

collection.FindOne(Query.EQ("_id", ObjectId.Parse("4dad901291c2949e7a5b6aa8")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...