Collection users:
<code> _id: ObjectId,
name: 'string',
requests: [
{
ref: 'users',
type: Schema.Types.ObjectId,
default: null
}
],
</code>
<code> _id: ObjectId,
name: 'string',
requests: [
{
ref: 'users',
type: Schema.Types.ObjectId,
default: null
}
],
</code>
_id: ObjectId,
name: 'string',
requests: [
{
ref: 'users',
type: Schema.Types.ObjectId,
default: null
}
],
I need to aggregate the the same collection. So, here is demo data of user one
<code>{
"_id": {
"$oid": "668372606b19b60fbe84e4b9"
},
"name": "user1",
"requests": []
}
</code>
<code>{
"_id": {
"$oid": "668372606b19b60fbe84e4b9"
},
"name": "user1",
"requests": []
}
</code>
{
"_id": {
"$oid": "668372606b19b60fbe84e4b9"
},
"name": "user1",
"requests": []
}
this is user two:
<code>{
"_id": {
"$oid": "6687c6e1ebe711aac96de69d"
},
"name": "user2",
"requests": [
{
"$oid": "668372606b19b60fbe84e4b9"
}
]
}
</code>
<code>{
"_id": {
"$oid": "6687c6e1ebe711aac96de69d"
},
"name": "user2",
"requests": [
{
"$oid": "668372606b19b60fbe84e4b9"
}
]
}
</code>
{
"_id": {
"$oid": "6687c6e1ebe711aac96de69d"
},
"name": "user2",
"requests": [
{
"$oid": "668372606b19b60fbe84e4b9"
}
]
}
I need to give id of user2 and aggregate requests array data and return name of user1(array can have more ids)
My query is:
<code> let requests = await User.aggregate([
{
$match: { _id: new mongoose.Types.ObjectId(userId)} //comes from frontend
},
{ $lookup: {
from: "users",
let: { requests: "$requests" },
pipeline: [
{ $match: { $expr: { $in: ["$_id", "$$requests"] }}},
],
as: "requestsData"
}
}
]);
</code>
<code> let requests = await User.aggregate([
{
$match: { _id: new mongoose.Types.ObjectId(userId)} //comes from frontend
},
{ $lookup: {
from: "users",
let: { requests: "$requests" },
pipeline: [
{ $match: { $expr: { $in: ["$_id", "$$requests"] }}},
],
as: "requestsData"
}
}
]);
</code>
let requests = await User.aggregate([
{
$match: { _id: new mongoose.Types.ObjectId(userId)} //comes from frontend
},
{ $lookup: {
from: "users",
let: { requests: "$requests" },
pipeline: [
{ $match: { $expr: { $in: ["$_id", "$$requests"] }}},
],
as: "requestsData"
}
}
]);
But it’s returns an empty array.