Учитывая этот набор данных:
{
"lstLikeUserid" : ["5992dc5725ac203acfa101e6"],
"title" : "a title"
},
{
"lstLikeUserid" : ["6000dc5725ac203acfa101e6"],
"title" : "another title"
}
Я хочу создать вычисляемое поле, чтобы указать, что в массиве lstLikeUserid присутствует идентификатор пользователя.
Вот код, который я используюкоторый не работает:
String userId ="5992dc5725ac203acfa101e6";
ConditionalOperators.Cond condOperation =
ConditionalOperators.when(Criteria.where("lstLikeUserid").is(userId))
.then("true")
.otherwise("false");
ProjectionOperation projectOperation =
Aggregation.project().and(condOperation).as("like").andInclude("title");
Aggregation aggregation
= Aggregation.newAggregation(projectOperation);
AggregationResults<ChannelItemEntry> result = mongoTemplate
.aggregate(aggregation,ChannelItemEntry.class, ChannelItemEntry.class);
Вычисленное поле «like» всегда ложно, даже если идентификатор пользователя совпадает.