I found something relevant on Query for documents where array size is greater than 1 it works fine for find
but not does not work for aggregation
query...
I have following collection of users...
{
"_id" : ObjectId("5ac8b91482c2345af70d4650"),
"firstName" : "Clerk",
"lastName" : "Kent",
"email" : "clerk@ltc.com",
"endorsedBy" : [],
"followings" : [],
"followers" : [],
"isAdminEndorsed" : false,
}
{
"_id" : ObjectId("5ac8ba3582c2345af70d4658"),
"firstName" : "Bruce",
"lastName" : "Wayne",
"email" : "bruce@linkites.com",
"endorsedBy" : [],
"followings" : [
ObjectId("5acc97b817c27b258bc9aa1e")
],
"followers" : [],
"isAdminEndorsed" : false
}
{
"_id" : ObjectId("5acc97b817c27b258bc9aa1e"),
"firstName" : "admin",
"lastName" : "ltc",
"email" : "superadmin@ltc.com",
"endorsedBy" : [],
"followings" : [],
"followers" : [
ObjectId("5ac8ba3582c2345af70d4658")
],
"isAdminEndorsed" : true
}
{
"_id" : ObjectId("5ad6ed4b7730923118b399a7"),
"firstName" : "Batman",
"lastName" : "tge",
"email" : "ashishlal95@gmail.com",
"endorsedBy" : [
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7"),
ObjectId("5ad6ed4b7730923118b399a7")
],
"followings" : [],
"followers" : [],
"isAdminEndorsed" : false
}
I want users list
1) not in logged in user.
2) endorsedBy length should be less than 10.
3) isAdminEndorsed should be false.
4) firstName should match regex 'cle'.
I have tried following query but doesn't work...Is there anything I am missing here...
const user = await User.aggregate([{
$match: {
_id: {
$ne: mongoose.Types.ObjectId(req.user.id)
},
$and: [{ endorsedBy: { $lt: 10 } }, { isAdminEndorsed: false }]
}
},{
$project: {
isFollow: { $in: [mongoose.Types.ObjectId(req.user.id),
'$followers'] },
}
}])
My output should be
{
"_id" : ObjectId("5ac8b91482c2345af70d4650"),
"firstName" : "Clerk",
"lastName" : "Kent"
}