提问人:Iman Kamali 提问时间:11/4/2023 更新时间:11/4/2023 访问量:21
聚合$lookup,但数组为空
$lookup in aggregate but array is empty
问:
我用$lookup加入连接。但是加入时需要空列表
''' var userId=“65421d801c128f2ed899a7a4”;''
aggregate([
{
$unwind: {
path: "$reserve",
preserveNullAndEmptyArrays: true
}
},
{
$lookup: {
from: "reserves",
let: {
reserveData: "$reserve"
},
pipeline: [{
$match: {
$expr: {
// $eq: ["$$reserveData", "$_id"], //return empty list
// $eq: [new mongoose.Types.ObjectId(userId),"$_id"],// This code works
$eq: [new mongoose.Types.ObjectId("$$reserveData"),"$_id"],// This code error
}
},
}, ],
as: "reserve"
}
])
以及使用 userId 时的结果
{
"status": "success",
"message": "okkkk",
"results": 1,
"data": [
{
"_id": "sdfgsd56",
"customer": "fghdfbv",
"price": 170000,
"off": 30000,
"reserve": [
{
"_id": "65421d801c128f2ed899a7a4",
"customer": "6540debf6ca6663eb886eb46",
"service": "65421c961c128f2ed899a631",
"__v": 0
}
]
}
]
}
但使用 get 错误:“传入的参数必须是 12 个字节的字符串或 24 个十六进制字符的字符串或整数”
和错误时使用
{$toObjectId: “$$reserveData”}
{$toString: “$$reserveData”} $eq: [new mongoose.Types.ObjectId("$$reserveData"),"$_id"]
答: 暂无答案
评论
$$reserveData
reserve
$$reserveData
ObjectId
$convert