【发布时间】:2020-01-16 12:10:05
【问题描述】:
得到一个json请求体如下:
{
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "0123456789"
}
我想在MongoDB中搜索相关条目,即使缺少某个字段,在这种情况下,缺少的字段必须匹配任何值。
例如,以下查询将搜索具有匹配名字的所有条目:
{
"firstName": "John"
}
虽然之前的 JSON 必须匹配所有 3 个参数。如果 3 个值之一为空白,则它应在搜索中包含空白。 但是,如果缺少键值对,例如在第二个 JSON 中,它必须匹配该键的任何值。
问题
- 我应该为所有组合编写一个查找器吗? 例如。类似于:
@Repository
List<Phonebook.Entry> findAllEntries();
@Query("{firstName : ?0, lastName: ?1}")
List<Phonebook.Entry> findEntryByName(String firstName, String lastName);
@Query("{firstName : ?0}")
List<Phonebook.Entry> findEntryByFirstName(String firstName);
@Query("{lastName : ?0}")
List<Phonebook.Entry> findEntryByLastName(String lastName);
@Query("{phoneNumber : ?0}")
List<Phonebook.Entry> findEntryByPhoneNumber(String phoneNumber);
@Query("{firstName : ?0, phoneNumber : ?1}")
List<Phonebook.Entry> findEntryByFirstNameAndPhoneNumber(String firstName, String phoneNumber);
@Query("{lastName : ?0, phoneNumber : ?1}")
List<Phonebook.Entry> findEntryByLastNameAndPhoneNumber(String lastName, String phoneNumber);
@Query("{firstName : ?0, lastName : ?1, phoneNumber : ?2}")
List<Phonebook.Entry> findEntryByLastNameAndFirstNameAndPhoneNumber(String firstName, String lastName,String phoneNumber);
}
- 如何将查询转换为“喜欢”搜索? 例如,以下 JSON 将返回名字以“Jo”开头的所有条目,而不是问题 1 中的确切值。
{
"firstName": "Jo"
}
谢谢!
【问题讨论】:
标签: json mongodb java-8 spring-data-jpa