Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Javascript 如何使用node.js、mngodb将多个集合合并为一个集合?_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 如何使用node.js、mngodb将多个集合合并为一个集合?

Javascript 如何使用node.js、mngodb将多个集合合并为一个集合?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我有4个系列,比如 分部 类别 产品组 产品 这些都是存储在集合中的我的数据 我的部门收集数据 { "divisionid": "1", "divisioncode": "0", "divisionname": "ELECTRONICS/HOME APPLIANCE", "divisionpoint": "2" }, { "divisionid": "2", "divisioncode": "1", "divisionname": "F

我有4个系列,比如

分部

类别

产品组

产品

这些都是存储在集合中的我的数据 我的部门收集数据

{

    "divisionid": "1",
    "divisioncode": "0",
    "divisionname": "ELECTRONICS/HOME APPLIANCE",
    "divisionpoint": "2"
},
{

    "divisionid": "2",
    "divisioncode": "1",
    "divisionname": "FOODS",
    "divisionpoint": "8"
}
{

    "categoryid": "1",
    "divisionid": "1",
    "categorycode": "34",
    "categoryname": "AUDIO SYSTEM",
    "categorypoint": "Null"
},
{

    "categoryid": "2",
    "divisionid": "1",
    "categorycode": "348",
    "categoryname": "DVD/VCD",
    "categorypoint": "8"
}
{

    "productgroupid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupname": "ADAPTOR",
    "productgroupcode": "6765",
    "productgrouppoint": "7"
},
{

    "productgroupid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupname": "WALKMAN",
    "productgroupcode": "7659",
    "productgrouppoint": "Null"
}
{

    "productid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupid":"1",
    "productname":"UNIVERSAL AC DC ADAPTER-PCS",
    "productcode": "1000054",
    "productpoint": "1"
},
{

    "productid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupid":"2",
    "productname":"WALKMAN WM#M470-PCS",
    "productcode": "1000089",
    "productpoint": "2"
}
类别收集数据的

{

    "divisionid": "1",
    "divisioncode": "0",
    "divisionname": "ELECTRONICS/HOME APPLIANCE",
    "divisionpoint": "2"
},
{

    "divisionid": "2",
    "divisioncode": "1",
    "divisionname": "FOODS",
    "divisionpoint": "8"
}
{

    "categoryid": "1",
    "divisionid": "1",
    "categorycode": "34",
    "categoryname": "AUDIO SYSTEM",
    "categorypoint": "Null"
},
{

    "categoryid": "2",
    "divisionid": "1",
    "categorycode": "348",
    "categoryname": "DVD/VCD",
    "categorypoint": "8"
}
{

    "productgroupid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupname": "ADAPTOR",
    "productgroupcode": "6765",
    "productgrouppoint": "7"
},
{

    "productgroupid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupname": "WALKMAN",
    "productgroupcode": "7659",
    "productgrouppoint": "Null"
}
{

    "productid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupid":"1",
    "productname":"UNIVERSAL AC DC ADAPTER-PCS",
    "productcode": "1000054",
    "productpoint": "1"
},
{

    "productid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupid":"2",
    "productname":"WALKMAN WM#M470-PCS",
    "productcode": "1000089",
    "productpoint": "2"
}
productgroup集合数据的

{

    "divisionid": "1",
    "divisioncode": "0",
    "divisionname": "ELECTRONICS/HOME APPLIANCE",
    "divisionpoint": "2"
},
{

    "divisionid": "2",
    "divisioncode": "1",
    "divisionname": "FOODS",
    "divisionpoint": "8"
}
{

    "categoryid": "1",
    "divisionid": "1",
    "categorycode": "34",
    "categoryname": "AUDIO SYSTEM",
    "categorypoint": "Null"
},
{

    "categoryid": "2",
    "divisionid": "1",
    "categorycode": "348",
    "categoryname": "DVD/VCD",
    "categorypoint": "8"
}
{

    "productgroupid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupname": "ADAPTOR",
    "productgroupcode": "6765",
    "productgrouppoint": "7"
},
{

    "productgroupid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupname": "WALKMAN",
    "productgroupcode": "7659",
    "productgrouppoint": "Null"
}
{

    "productid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupid":"1",
    "productname":"UNIVERSAL AC DC ADAPTER-PCS",
    "productcode": "1000054",
    "productpoint": "1"
},
{

    "productid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupid":"2",
    "productname":"WALKMAN WM#M470-PCS",
    "productcode": "1000089",
    "productpoint": "2"
}
产品收集数据

{

    "divisionid": "1",
    "divisioncode": "0",
    "divisionname": "ELECTRONICS/HOME APPLIANCE",
    "divisionpoint": "2"
},
{

    "divisionid": "2",
    "divisioncode": "1",
    "divisionname": "FOODS",
    "divisionpoint": "8"
}
{

    "categoryid": "1",
    "divisionid": "1",
    "categorycode": "34",
    "categoryname": "AUDIO SYSTEM",
    "categorypoint": "Null"
},
{

    "categoryid": "2",
    "divisionid": "1",
    "categorycode": "348",
    "categoryname": "DVD/VCD",
    "categorypoint": "8"
}
{

    "productgroupid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupname": "ADAPTOR",
    "productgroupcode": "6765",
    "productgrouppoint": "7"
},
{

    "productgroupid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupname": "WALKMAN",
    "productgroupcode": "7659",
    "productgrouppoint": "Null"
}
{

    "productid": "1",
    "divisionid": "1",
    "categoryid": "1",
    "productgroupid":"1",
    "productname":"UNIVERSAL AC DC ADAPTER-PCS",
    "productcode": "1000054",
    "productpoint": "1"
},
{

    "productid": "2",
    "divisionid": "1",
    "categoryid": "2",
    "productgroupid":"2",
    "productname":"WALKMAN WM#M470-PCS",
    "productcode": "1000089",
    "productpoint": "2"
}
我想把这4个系列合并成一个系列

my expectation result:

productsummary
{

    "product": {
        "point": "1",
        "name": "UNIVERSAL AC DC ADAPTER-PCS",
        "code": "10000054",
        "id"  :"1"
    },
    "group": {
        "point": "7",
        "name": "ADAPTOR",
        "id"  :"1"
    },
    "category": {
        "point": "0",
        "name": "AUDIO SYSTEM",
        "id"  :"1"
    },
    "division": {
        "point": "2",
        "name": "ELECTRONICS/HOME APPLIANCE",
        "id"  :"1"
    }
},
{

    "product": {
        "point": "2",
        "name": "WALKMAN WM#M470-PCS",
        "code": "1000089",
        "id"  :"2"
    },
    "group": {
        "point": "7",
        "name": "WALKMAN",
        "id"  :"Null"
    },
    "category": {
        "point": "8",
        "name": "DVD/VCD",
        "id"  :"2"
    },
    "division": {
        "point": "2",
        "name": "ELECTRONICS/HOME APPLIANCE",
        "id"  :"1"
    }
}
当我执行下面的红色代码时,我得到了一个错误


您可以使用多个
$lookup
从多个集合中获取数据。假设您从产品集合运行查询。查询式

db.products.aggregate([ 
    {$lookup:{from:"productgroups", localField:"productgroupid", foreignField:"productgroupid", as:"group"}},
    {$lookup:{from:"category", localField:"categoryid", foreignField:"categoryid", as:"category"}},
    {$lookup:{from:"divisions", localField:"divisionid", foreignField:"divisionid", as:"division"}},
    {$project: {productpoint:1,productname:1,productcode:1,productid:1,group: { $arrayElemAt: [ "$group", 0 ]},
                category: { $arrayElemAt: [ "$category", 0 ]}, division: { $arrayElemAt: [ "$division", 0 ]} }} 
  ]); 
然后您的输出将显示为

{
    "_id" : ObjectId("58466154668bde730a460e1c"),
    "productid" : "1",
    "productname" : "UNIVERSAL AC DC ADAPTER-PCS",
    "productcode" : "1000054",
    "productpoint" : "1",
    "group" : {
        "_id" : ObjectId("5846612b668bde730a460e1a"),
        "productgroupid" : "1",
        "divisionid" : "1",
        "categoryid" : "1",
        "productgroupname" : "ADAPTOR",
        "productgroupcode" : "6765",
        "productgrouppoint" : "7"
    },
    "category" : {
        "_id" : ObjectId("584660f8668bde730a460e18"),
        "categoryid" : "1",
        "divisionid" : "1",
        "categorycode" : "34",
        "categoryname" : "AUDIO SYSTEM",
        "categorypoint" : "Null"
    },
    "division" : {
        "_id" : ObjectId("584660a7668bde730a460e16"),
        "divisionid" : "1",
        "divisioncode" : "0",
        "divisionname" : "ELECTRONICS/HOME APPLIANCE",
        "divisionpoint" : "2"
    }
}

如果您遇到任何问题,您可以通过聚合和查找参考资料来完成此操作。我是这项技术的新手,请您帮助我@VinodLouisi有6万种产品。上面的代码不起作用@Shaishab Royi先生,如果有大量数据,那么您可以使用
跳过
限制
lookup
否则可能需要一些时间才能完成,一件重要的事情是你应该创建
lookup
字段的
index
,然后它会运行得更快。我如何做skip和limit?你能帮我吗?
{$skip:skipValue},{$limit:limitValue}
然后
{$lookup:…}