Я впервые использую Mongo на Java, и у меня возникли некоторые проблемы с этим агрегатным запросом. Я могу выполнить несколько простых запросов в Mongo для Spring с помощью аннотации @Query в интерфейсе моего репозитория, которая расширяет MongoRepository. Было бы полезно узнать, какой подход использовать при выполнении длинных агрегаций в Spring-Data.
db.post.aggregate([
{
$match: {}
},
{
$lookup: {
from: "users",
localField: "postedBy",
foreignField: "_id",
as: "user"
}
},
{
$group: {
_id: {
username: "$user.name",
title: "$title",
description: "$description",
upvotes: { $size: "$upvotesBy" },
upvotesBy: "$upvotesBy",
isUpvoted: { $in: [req.query.userId, "$upvotesBy"] },
isPinned: {
$cond: {
if: { $gte: [{ $size: "$upvotesBy" }, 3] },
then: true,
else: false
}
},
file: "$file",
createdAt: {
$dateToString: {
format: "%H:%M %d-%m-%Y",
timezone: "+01",
date: "$createdAt"
}
},
id: "$_id"
}
}
},
{ $sort: { "_id.isPinned": -1, "_id.createdAt": -1 } }
])