【发布时间】:2018-02-08 07:00:14
【问题描述】:
我有以下查询/投影,可用于从我的数据集中检索数据:
db.library.find({
party_id: 'TEST_PARTY_ID',
contract_id : 'TEST_CONTRACT_ID'
},
{
library_list: {
$elemMatch: {
book_code: 'TST_BOOK_CODE'
}
}
})
换句话说:通过party_id和contract_id查找所有文档,并返回library_list数组中书籍代码与'TST_BOOK_CODE'匹配的library_list元素。
我想将此查询添加到我的 Spring 存储库中,因此我创建了以下内容:
@Query(value="{party_id: ?0, contract_id : ?1}", fields="{'library_list': {$elemMatch: {'book_code': ?2}}}")
Library findLibraryByPartyAndContractAndBookCode(String partyId, String contractId, String bookCode);
这不起作用。我取回了一个文档,其中除了文档 ID 之外的所有内容都为空。但是,如果我删除“字段”属性,我会取回整个文档。看起来“值”选择器很好,但“字段”选择器有问题。 JPA 在这里不支持 $elemMatch 语法吗?根据 javadoc:"Both attributes allow using a placeholder notation of ?0, ?1 and so on",所以我认为这不是问题。
【问题讨论】:
-
它对我有用。你可以在帖子中添加
LibraryList和Librarypojo 吗?