4

在 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 在一个查询中获取多个文档?

4

1 回答 1

6

我看到了两个选项来实现对多个 id 的查找:

// 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,如果你使用 annotatedString而不是 an ObjectId,该Oid.withOid方法会将你String转换为ObjectId.

但是,最后,这种便捷的方法输入被转换为常规的字符串化查询。因此,如果便利不符合您的需要,请尝试查询。

于 2013-12-01T10:10:08.520 回答