Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongoDB“;$lookup的参数必须是字符串,让:。。。。是第3类“;,_Mongodb - Fatal编程技术网

mongoDB“;$lookup的参数必须是字符串,让:。。。。是第3类“;,

mongoDB“;$lookup的参数必须是字符串,让:。。。。是第3类“;,,mongodb,Mongodb,如何在id数组(长)而不是单个id的字段上执行$lookup? 试图通过_id从集合“products”中检索产品信息,将其放入数组中,然后将产品信息列表嵌入仓库文档 不幸的是,我们的mongo数据库是3.2版本的,因此新特性允许使用array()进行查找不适用 通过在线查看一系列解决方案,这似乎是最接近的,将其修改为以下内容: db.getCollection('warehouses').aggregate([ {"$match": // cond

如何在id数组(长)而不是单个id的字段上执行$lookup? 试图通过_id从集合“products”中检索产品信息,将其放入数组中,然后将产品信息列表嵌入仓库文档

不幸的是,我们的mongo数据库是3.2版本的,因此新特性允许使用array()进行查找不适用

通过在线查看一系列解决方案,这似乎是最接近的,将其修改为以下内容:

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。