使用DropWizard和MongoDB搜索多个值中的关键字



我想在所有MongoDB文档的多个值中搜索一个字符串,并返回匹配的文档作为回报。

这就是我试图用一个键做的

BasicDBObject object = new BasicDBObject();
object.put("firstName",  Pattern.compile(value));
FindIterable<Document> documents = mongoCollection.find(object)
.skip(size*(index - 1)).limit(size);
for (Document document : documents) {
customerList.add(CustomerMapper.map(document));
}
return customerList;

如何更改它以搜索所有键/值中的值?

我在客户收藏的每个文档中都有firstName, lastName, email, phoneNumber

建议?

使用以下代码修复了它:

BasicDBObject orQuery = new BasicDBObject();
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
obj.add(new BasicDBObject("firstName", new BasicDBObject("$regex", value).append("$options", "i")));
obj.add(new BasicDBObject("lastName", new BasicDBObject("$regex", value).append("$options", "i")));
obj.add(new BasicDBObject("email", new BasicDBObject("$regex", value).append("$options", "i")));
obj.add(new BasicDBObject("phoneNumber", new BasicDBObject("$regex", value).append("$options", "i")));
orQuery.put("$or", obj);
FindIterable<Document> documents = mongoCollection.find(orQuery)

这有助于我使用选定的键进行搜索。

最新更新