使用mongodb的java驱动,如何在同一个字段上搜索多个值?

kan*_*ane 3 mongodb mongodb-java

我对 mongo 有点陌生。我想在一个字段上查询多个值。在 SQL 中,我想要这样的东西:

select * from table where field in ("foo","bar")
Run Code Online (Sandbox Code Playgroud)

假设我在mongodb中有以下文件

{
  "_id":"foo"
}
{
  "_id":"bar"
}
Run Code Online (Sandbox Code Playgroud)

我只是想模仿这个查询:

db.coll.find( { _id: { $in: [ "foo", "bar" ] } } );
Run Code Online (Sandbox Code Playgroud)

我想检索 _id 为“foo”或“bar”的所有文档。我想使用 java 驱动程序来做到这一点。

我试过类似的东西

BasicDBObject query = new DBObject()
query.append("_id","foo");
query.append("_id","bar");
collection.find(query);
Run Code Online (Sandbox Code Playgroud)

但这似乎只返回“bar”文件。

请帮忙

Joh*_*yHK 5

要使用$in运算符,QueryBuilder创建这样的查询可能更容易:

QueryBuilder qb = new QueryBuilder();
qb.put("_id").in(new String[] {"foo", "bar"});
collection.find(qb.get());
Run Code Online (Sandbox Code Playgroud)

或者更清洁一点:

DBObject query = QueryBuilder.start("_id").in(new String[] {"foo", "bar"}).get();
collection.find(query);
Run Code Online (Sandbox Code Playgroud)