我的文件类型如下:
{
"_id":{"$oid":"5fa6cdf065249ffc1282e880"},
"ask":["java",
"what is java",
"java is"],
"answer":"Java is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible"
}
如何通过数组中的值获取文档?
例如,我正在编写“ java is”,我想获取此文档,但是“ java is”在数组中。
当“ ask”字段为字符串时,我很容易收到文档:
@Repository
public interface PostRepository extends MongoRepository<Answer, String> {
public Answer findAnswerByAsk(String ask);
}
答案 0 :(得分:0)
您只需要此查询
db.collection.find({
"ask": "java is"
})
它将在ask
字段中获取包含'java is'的文档。
示例here
使用Spring Boot
无法测试,但可以使用@Query
。
类似的事情(我再说一次,未经测试):
@Query("{ 'ask': ?0}")
public Answer findAnswerByAsk(String ask);
答案 1 :(得分:0)
使用Spring数据mongodb存储库,您可以使用Containing
关键字在集合中搜索元素。 Reference documentation.
@Repository
public interface PostRepository extends MongoRepository<Answer, String> {
public Answer findAnswerByAskContaining(String ask);
}
使用mongoTemplate
助手可以使用$ elemMatch
Query query = new Query();
query.addCriteria(Criteria.where("ask").elemMatch(Criteria.is("java is"));
mongoTemplate.find(query, Document.class);