Я пытаюсь сделать запрос, чтобы найти пользователей, у которых день рождения.Этот запрос:
db.getCollection('_user').find({
"$and" : [
{"$expr" : [{ "$dayOfMonth": "$time_created" } , { "$dayOfMonth": new Date() }]},
{"$expr" : [ { "$month": "$time_created" } , { "$month": new Date() }]},
{"$expr" : { "$ne" : [ { "$year": "$time_created" } , { "$year": new Date() }]}}
]
})
Теперь я попытался при весенней загрузке с критериями сделать этот запрос:
criteria.andOperator(
Criteria.where("$expr").is(Arrays.asList("{ \"$dayOfMonth\": \"$time_created\" }", "{ \"$dayOfMonth\": new Date() }")),
Criteria.where("$expr").is(Arrays.asList("{ \"$month\": \"$time_created\" }", "{ \"$month\": new Date() }")),
Criteria.where("$expr").ne(Arrays.asList("{ \"$year\": \"$time_created\" }", "{ \"$year\": new Date() }"))
);
, если я сделаю это так, я получу как окончательный запрос: http://prntscr.com/mmxbg3 и все это \ и "создают проблемы
, но если я выполняю запрос критериев без этих символов, то возникают ошибки из-за синтаксиса:
criteria.andOperator(
Criteria.where("$expr").is({"$dayOfMonth": "$time_created" }, { "$dayOfMonth": new Date() })),
Criteria.where("$expr").is(Arrays.asList({ "$month": "$time_created" }, { "$month": new Date() })),
Criteria.where("$expr").ne(Arrays.asList({ "$year": "$time_created" }, { "$year": new Date() }))
);
Кто-нибудь знаетКак я могу построить этот запрос?