I'm trying to create a viewAmount
attribute on a Video
document where we sum up something it owns called Views
, but only where view.valid = true
.
This is what I have so far:
{
$project: {
title: 1,
viewAmount: { $size: "$views" }
}
},
What can I add to do a conditional check if the view is valid or not rather than just noting the size? Do I have to use the $unwind
operator? Thanks
Edit:
I am actually checking if view.validity (checkedView.validity) is equal to 'real'.
Here's my updated answer so far which isn't quite working:
{ $project: {
title: 1,
viewAmount: {
$size: {
$filter: {
input: "$checkedViews",
as: "view",
cond: { $eq: ["$$view.validity", "real"] }
}
}
}
}
},
An example Video:
{
"_id" : ObjectId("59b5d09980348a3ec3541acc"),
"checkedViews" : [
ObjectId("59b5d0b280348a3ec3541acd"),
ObjectId("59b5d0bf80348a3ec3541ace"),
ObjectId("59b5d1dbd8f37d4ab797fa5c")
]
}
An example checkedView:
{
"_id" : ObjectId("59b5d0b280348a3ec3541acd"),
"updatedAt" : ISODate("2017-09-10T23:54:26.752Z"),
"createdAt" : ISODate("2017-09-10T23:54:26.752Z"),
"video" : ObjectId("59b5d09980348a3ec3541acc"),
"validity" : "real",
"__v" : 0
}