mongo java 根据if条件addFields

mongo脚本:

db.collection1.aggregate([
    { 
        $addFields: {
            newColumn:{
              $cond: {
                  if: { $eq:["$query1", 1], $eq:["$query2", 2]},
                  then: "$find",
                  else: "not find"
        }}
        }
    }
])

java代码: 

        AggregationOperation startDateSet = aoc -> new Document("$addFields", new Document("newColumn", new Document("$cond",
          new Document("if", new Document("$eq", Arrays.asList("$query1", 1)).append("$eq", Arrays.asList("$query2", 2)))
            .append("then", "$find").append("else", "not find")
        )));
        Aggregation aggregation = Aggregation.newAggregation(
          startDateSet,
          Aggregation.skip(pageSize * (pageNo - 1)),
          Aggregation.limit(pageSize)
        );

long l = System.currentTimeMillis(); Query query1 = new Query(); //筛选 if (query.getLogId() != null) { query1.addCriteria(Criteria.where("id").is(query.getLogId())); } if (query.getInviteCode() != null) { query1.addCriteria(Criteria.where("inviteCode").is(query.getInviteCode())); } if (query.getSenderUserId() != null) { query1.addCriteria(Criteria.where("senderUserId").is(query.getSenderUserId())); } if (query.getReceiverUserId() != null) { query1.addCriteria(Criteria.where("receiverUserId").is(query.getReceiverUserId())); } if (query.getStatus() != null) { query1.addCriteria(Criteria.where("status").is(query.getStatus())); } if (query.getTime() != null) { if (StringUtils.isNotBlank(query.getTime().getStartTime()) && StringUtils.isNotBlank(query.getTime().getEndTime())) { query1.addCriteria(Criteria.where("dateFormat").gte(query.getTime().getStartTime()).lte(query.getTime().getEndTime())); } else if (StringUtils.isNotBlank(query.getTime().getStartTime())) { query1.addCriteria(Criteria.where("dateFormat").gte(query.getTime().getStartTime())); } else if (StringUtils.isNotBlank(query.getTime().getEndTime())) { query1.addCriteria(Criteria.where("dateFormat").lte(query.getTime().getEndTime())); } } page.setTotal(mongoTemplate.count(query1, UserInviteLogDoc.class)); query1.with(Sort.by(Sort.Direction.DESC, "_id")); query1.skip((page.getCurrent() - 1) * page.getSize()); query1.limit((int) page.getSize()); List<UserInviteLogDoc> gameInviteLogDocList = mongoTemplate.find(query1, UserInviteLogDoc.class); List<GameUserInviteLogAdminVo> list = gameInviteLogDocList.stream().map(gameInviteLogDoc -> { GameUserInviteLogAdminVo gameUserInviteLogAdminVo = new GameUserInviteLogAdminVo(); BeanUtils.copyProperties(gameInviteLogDoc, gameUserInviteLogAdminVo); gameUserInviteLogAdminVo.setLogId(gameInviteLogDoc.getId()); Aggregation aggregation = Aggregation.newAggregation( Aggregation.match(Criteria.where("sourceUserId").is(gameInviteLogDoc.getSenderUserId()) .and("userId").is(gameInviteLogDoc.getReceiverUserId()) .and("taskType").is(6) .and("isDelete").is(0)), Aggregation.project("taskKey") // 只返回 taskKey 字段 ); AggregationResults<UserTaskRecordDoc> results = mongoTemplate.aggregate(aggregation, UserTaskRecordDoc.class, UserTaskRecordDoc.class); Object[] array = results.getMappedResults().stream().map(taskRecordDoc -> taskRecordDoc.getTaskKey()).toArray(); gameUserInviteLogAdminVo.setTaskKey(JSONObject.toJSONString(array)); return gameUserInviteLogAdminVo; }).toList(); page.setRecords(list); 优化 怎么把这两个联查一下
最新发布
10-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值