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