如何解决SpringBoot / Mongo:如何查询数组中的特定元素如果存在
我在将mongdb驱动程序SpringData与SpringBoot结合使用时,发现查询存在问题
所以我的文档结构如下:
_id:abc,items : [
{itemId : "mlk",count : 4},{itemId : "poi",count : 2},]
_id:def,count : 1},]
_id:ghi,items : [
{itemId : "poi",]
我想做的是查询给定itemId和相关计数的商品的集合:
- 如果数组中不存在itemId
- 如果itemId存在于数组中,并且其计数为$ lt参数
示例:
输入:itemId = mlk,计数= 2
输出:
_id:def,]
我知道我需要使用$ elemMatch来做到这一点,到目前为止,我是这样的:
Criteria.where("items").elemMatch("itemId").is("mlk").and("count").lt(2)
仅当数组中存在mlk时,此方法才能很好地工作,因此在我的情况下,它不会返回最后一个文档...
我尝试过这个:
Criteria countCriteria = Criteria.where("itemId").is("mlk").and("count").lt(2);
Criteria existCriteria = Criteria.where("itemId.mlk").exists(false);
Criteria finalCriteria = Criteria.where("items").elemMatch(new Criteria().orOperator(countCriteria,existCriteria)
但是最后一个查询返回了3个文档...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。