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

问题描述 投票:0回答:1

我想在所有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

建议?

java mongodb dropwizard
1个回答
0
投票

使用以下代码修复了它:

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)

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

© www.soinside.com 2019 - 2024. All rights reserved.