问题描述
我在将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)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)