【发布时间】:2022-01-04 01:05:28
【问题描述】:
这是我正在使用的查找查询
{
$lookup: {
from: 'weeks',
localField: 'weeks',
foreignField: '_id',
as: 'weeks'
}
}
Result with this query
"weeks": [
{
"_id": "619e87d7b1bd6501c7aae286",
"name": "week-1",
"description": "Commodo in o.",
"course": "619e87d7b1bd6501c7aae281",
"days": [
"619e87dab1bd6501c7aae2a8",
"619e87dab1bd6501c7aae2a9",
"619e87dab1bd6501c7aae2aa",
"619e87dab1bd6501c7aae2ab",
"619e87dab1bd6501c7aae2ac",
"619e87dab1bd6501c7aae2ad"
],
"isCopy": false,
"__v": 0
},
{
"_id": "619e87d7b1bd6501c7aae287",
"name": "week-2",
"description": "Irure e.",
"course": "619e87d7b1bd6501c7aae281",
"days": [
"619e87dab1bd6501c7aae2db",
"619e87dab1bd6501c7aae2dc",
"619e87dab1bd6501c7aae2dd",
"619e87dab1bd6501c7aae2de",
"619e87dab1bd6501c7aae2df",
"619e87dab1bd6501c7aae2e0"
],
"isCopy": false,
"__v": 0
},]
在上面的查找中,localField 周是一个对象 ID 的数组。 当我执行此代码时,它按预期工作,但我想使用与管道相同的功能。 这是我写的代码
{
$lookup: {
from: "weeks",
let: { wks: "$weeks" },
pipeline: [
{
$match: {
_id: {
$in: ["$$wks"]
}
}
}
],
as: "weeks"
}
}
Result with this query `weeks:[]`
当我运行它时,我没有得到任何输出,在我看来,原因是周数组被解释为字符串而不是对象 ID。
我现在该如何解决...
【问题讨论】:
-
请给出一些测试数据和预期结果
-
我添加了一个数据样本
-
由于您使用的是
$lookup,因此最好提供两个集合的示例数据。您可以使用mongoplayground 给您原来的成功查找,然后我们可以找出如何改进,同时您想在其中使用管道。 -
嘿,我也添加了成功的查找
标签: mongodb mongoose aggregate mongoose-schema mongoose-populate