mongoDB“;$lookup的参数必须是字符串,让:。。。。是第3类“;,
如何在id数组(长)而不是单个id的字段上执行$lookup? 试图通过_id从集合“products”中检索产品信息,将其放入数组中,然后将产品信息列表嵌入仓库文档 不幸的是,我们的mongo数据库是3.2版本的,因此新特性允许使用array()进行查找不适用 通过在线查看一系列解决方案,这似乎是最接近的,将其修改为以下内容:mongoDB“;$lookup的参数必须是字符串,让:。。。。是第3类“;,,mongodb,Mongodb,如何在id数组(长)而不是单个id的字段上执行$lookup? 试图通过_id从集合“products”中检索产品信息,将其放入数组中,然后将产品信息列表嵌入仓库文档 不幸的是,我们的mongo数据库是3.2版本的,因此新特性允许使用array()进行查找不适用 通过在线查看一系列解决方案,这似乎是最接近的,将其修改为以下内容: db.getCollection('warehouses').aggregate([ {"$match": // cond
db.getCollection('warehouses').aggregate([
{"$match":
// conditions to be matched
},
{ $lookup:
{
from: 'products',
let: {'productIds' : '$productIds' },
pipeline: [
{ $match: { $expr: {$in: ["$_id", "$$productIds"] } } },
],
as: 'productLists'
}
}
])
但是,它会出现以下错误:
"arguments to $lookup must be strings, let: .... is type 3".
_id是数字(长)而不是字符串,是否有解决方法?谢谢
仓库文件样本:
{
"_id" : NumberLong(1),
productIds: [NumberLong(1), NumberLong(2), NumberLong(3)],
"warehouseProperty1" : "warehouseProperty1",
"warehouseProperty2" : "warehouseProperty2",
"warehouseProperty3" : "warehouseProperty3",
"warehouseProperty4" : "warehouseProperty4"
}
{
"_id" : NumberLong(1),
"productProperty1" : "productProperty1",
"productProperty2" : "productProperty2",
"productProperty3" : "productProperty3",
"productProperty4" : "productProperty4"
}
产品文件样本:
{
"_id" : NumberLong(1),
productIds: [NumberLong(1), NumberLong(2), NumberLong(3)],
"warehouseProperty1" : "warehouseProperty1",
"warehouseProperty2" : "warehouseProperty2",
"warehouseProperty3" : "warehouseProperty3",
"warehouseProperty4" : "warehouseProperty4"
}
{
"_id" : NumberLong(1),
"productProperty1" : "productProperty1",
"productProperty2" : "productProperty2",
"productProperty3" : "productProperty3",
"productProperty4" : "productProperty4"
}
期望输出:
{
"_id" : NumberLong(1),
productIds: [
{
"_id" : NumberLong(1),
"productProperty1" : "productProperty1",
"productProperty2" : "productProperty2",
"productProperty3" : "productProperty3",
"productProperty4" : "productProperty4"
},
{
"_id" : NumberLong(2),
"productProperty1" : "productProperty1",
"productProperty2" : "productProperty2",
"productProperty3" : "productProperty3",
"productProperty4" : "productProperty4"
},
{
"_id" : NumberLong(3),
"productProperty1" : "productProperty1",
"productProperty2" : "productProperty2",
"productProperty3" : "productProperty3",
"productProperty4" : "productProperty4"
},
],
"warehouseProperty1" : "warehouseProperty1",
"warehouseProperty2" : "warehouseProperty2",
"warehouseProperty3" : "warehouseProperty3",
"warehouseProperty4" : "warehouseProperty4"
}
let
也不是3.2中存在的密钥。表示使用$unwind。let
也不是3.2中存在的键。表示使用$REWIND。