У нас есть структура для веб-сайта, подобная следующей:
{
"_id" : ObjectId("52b3833bd3e98582d2bfb628"),
"author" : {
"name" : "Graydon Hoare",
"email" : "..."
},
"title" : "Why Rust ditched pure functions",
"body" : "sth",
"starred" : 105,
"comments" : [
{
"user" : "hypster",
"upVotes" : 30,
"downVotes" : 2,
"text" : "....",
"replies" : [
{
"user" : "homoiconic",
"upVotes" : 15,
"downVotes" : 0,
"text" : "Here comes the Big Boss, Hu! Simon Peyton-Jones."
}
я хочу рассчитать количество комментариев (также может быть найдено в ответах) для каждого пользователя и проверить, больше ли оно 1, получить его.
Я реализовал код, показанный ниже:
db.links.aggregate([
{
$unwind: "$comments.user"
},
{
$unwind: "$comments.replies.user"
},
{
$group: {
_id: "$comments.user",
totalComments: {$sum: "$name"},
count: {$sum: 1}
}
},
])
Другими словами, мы хотим подсчитать, сколько комментариев пользователь оставляет на сайте для каждого поста, если его больше, чем один, получить его.