В 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,

Но, в конце концов, ввод этого удобного метода преобразуется в обычный строковый запрос. Так что, если удобство не соответствует вашим потребностям, попробуйте вместо этого запрос.

Другие вопросы по тегам