В Jongo, как найти несколько документов из Mongodb по списку идентификаторов
В mongodb я могу сделать это с помощью следующего запроса:
find(
{ _id : { $in : [ ObjectId('5275c6721a88939923c3ea54'), ObjectId('5275c6721a88939923c3ea55'), ObjectId('5275c6721a88939923c3ea56'), ObjectId('5275c6721a88939923c3ea57'), ObjectId('5275c6721a88939923c3ea58') ] } }
)
Но как мы можем сделать то же самое, используя код Jongo?
Я знаю, что мы можем найти один документ через:
db.getCollection("mongoEg").findOne(Oid.withOid("5194d46bdda2de09c656b64b")).as(MongoTest.class);
Но как получить более одного документа в одном запросе через Jongo?
1 ответ
Решение
Я вижу два варианта достижения поиска по нескольким идентификаторам:
// 1. find with an array of ids
ObjectId[] ids = {id, id, id};
collection.find("{_id:{$in:#}}", ids).as(Friend.class);
// 2.find a list of ids
collection.find("{_id:{$in:[#, #, #]}}", id, id, id).as(Friend.class);
findOne
предлагает удобный метод с ObjectId
и, если вы используете аннотированный String
вместо ObjectId
, Oid.withOid
метод превращает ваш String
в ObjectId
,
Но, в конце концов, ввод этого удобного метода преобразуется в обычный строковый запрос. Так что, если удобство не соответствует вашим потребностям, попробуйте вместо этого запрос.