我想在所有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)
这帮助我使用选定的键进行搜索。