I have a issue with the second $lookup when I am m using pipeline,but with localField and foreignField it works fine.
My collections bellow:
FeedCategories:
{"_id":{"$oid":"1"},"name":"XXX1","status":"active"}
{"_id":{"$oid":"2"},"name":"XXX2","status":"active"}
Feeds:
{ "_id": { "$oid": "1" }, "category": { "$oid": "1" }, "status": "published" }
{ "_id": { "$oid": "2" }, "category": { "$oid": "1" }, "status": "published" }
{ "_id": { "$oid": "3" }, "category": { "$oid": "2" }, "status": "published" }
FeedCategoriesUser
{ "_id": { "$oid": "1" }, "Feed_left_id": { "$oid": "1" }, "User_right_id": { "$oid": "2" }}
{ "_id": { "$oid": "2" }, "Feed_left_id": { "$oid": "2" }, "User_right_id": { "$oid": "2" }}
My mongoose code:
FeedCategoriesModel.aggregate([{
$lookup: {
from: 'feeds',
let: { categoryId: "$_id" },
pipeline: [
{ "$match": {
"$expr": { "$eq": [ "$category", "$$categoryId" ] },
"status": "published"
}}
],
as: 'feedsByCategory'
}
}, {
$lookup: {
from: 'feed_categories_user',
localField: 'feedsByCategory._id',
foreignField: 'Feed_left_id',
as: 'feedsByCategoryCompleted'
}
}]);
but when I am using pipeline in this way, I dont have any results in feedsByCategoryCompleted:
FeedCategoriesModel.aggregate([{
$lookup: {
from: 'feeds',
let: { categoryId: "$_id" },
pipeline: [
{ "$match": {
"$expr": { "$eq": [ "$category", "$$categoryId" ] },
"status": "published"
}}
],
as: 'feedsByCategory'
}
}, {
$lookup: {
from: 'feed_categories_user',
let: {feedid: "$feedsByCategory._id"},
pipeline:[{
"$match":{
"$expr": { "$eq": [ "$Feed_left_id", "$$feedid" ] }
}
}],
as: 'feedsByCategoryUsed'
}
}])
How to use piepeline for second $lookup in the above example?