Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/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
使用聚合框架快速查询mongodb_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

使用聚合框架快速查询mongodb

使用聚合框架快速查询mongodb,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,有没有更快的方法查询MongoDB? 我的数据是这样的: [{ "c_custkey": 1, "c_name": "Customer#000000001", "c_address": "IVhzIApeRb", "c_city": "MOROCCO 0", "c_nation": "MOROCCO", "c_region": "AFRICA", "lineorders": [{

有没有更快的方法查询MongoDB? 我的数据是这样的:

[{
        "c_custkey": 1,
        "c_name": "Customer#000000001",
        "c_address": "IVhzIApeRb",
        "c_city": "MOROCCO  0",
        "c_nation": "MOROCCO",
        "c_region": "AFRICA",
        "lineorders": [{
                    "lo_orderkey": 164711,
                    "lo_linenumber": 1,
                    "lo_custkey": 1,
                    "lo_partkey": 82527,
                    "lo_suppkey": 1848,
                    "lo_quantity": 34,
                    "lo_extendedprice": 5132368,
                    "orderdate": [{
                        "d_datekey": 19920426,
                        "d_date": "April 26, 1992",
                        "d_dayofweek": "Monday",
                        "d_month": "April",
                        "d_year": 1992,
                        "d_yearmonthnum": 199204,
                    }],
                    "part": [{
                        "p_partkey": 82527,
                        "p_name": "steel tomato",
                        "p_mfgr": "MFGR#4",
                        "p_category": "MFGR#45",
                        "p_brand1": "MFGR#452",
                    }],
                    "supplier": [{
                        "s_city": "MOZAMBIQU8",
                        "s_nation": "MOZAMBIQUE",
                        "s_region": "AFRICA",
                    }]
                }, {
                    "lo_orderkey": 164711,
                    "lo_linenumber": 2,
                    "lo_custkey": 1,
                    "lo_partkey": 26184,
                    "lo_suppkey": 1046,
                    "lo_orderdate": 19920426,
                    "lo_quantity": 15,
                    "lo_extendedprice": 1665270,
                    "orderdate": [{
                        "d_datekey": 19920426,
                        "d_date": "April 26, 1992",
                        "d_dayofweek": "Monday",
                        "d_month": "April",
                        "d_year": 1992,
                        "d_yearmonthnum": 199204,
                    }],
                    "part": [{
                        "p_partkey": 26184,
                        "p_name": "chartreuse green",
                        "p_mfgr": "MFGR#2",
                        "p_category": "MFGR#23",
                        "p_brand1": "MFGR#2329",
                    }],
                    "supplier": [{
                        "s_suppkey": 1046,
                        "s_city": "SAUDI ARA2",
                        "s_nation": "SAUDI ARABIA",
                        "s_region": "MIDDLE EAST",
                    }]
                },
我这样问:

db.customer.aggregate([
   { "$match":{
       "$and":[
          {"lineorder.orderdate.d_year":{"$gte":1992}},
          {"lineorder.orderdate.d_year":{"$lte":1997}},
          {"lineorder.supplier.s_region":"ASIA"},
          {"c_region":"ASIA"}
       ]
   }},
   { "$unwind":"$lineorder" },
   { "$match":{
       "$and":[
           {"lineorder.orderdate.d_year":{"$gte":1992}},
           {"lineorder.orderdate.d_year":{"$lte":1997}},
           {"lineorder.supplier.s_region":"ASIA"},
           {"c_region":"ASIA"}
       ]
    }},
   { "$project": {
       "lineorder.supplier.s_nation":1,
       "c_nation":1,"
       "lineorder.orderdate.d_year":1,
       "lineorder.lo_revenue":1
   }},
   { "$group":{
      "_id":{
          "s_nation":"$lineorder.supplier.s_nation",
          "c_nation":"$c_nation",
          "d_year": "$lineorder.orderdate.d_year"
      }, 
      "revenue": {"$sum": "$lineorder.lo_revenue"}
   }},
   { "$sort":{"_id.d_year":1, revenue:-1}}
]).toArray()

我必须“匹配”两次的原因是,当我这样做一次时,它会返回所有符合我的条件的文档,而不是文档中有一个匹配项的所有“LineOrder”都满足它,如果我在花费大量时间之前进行“放卷”。我的数据库有2GB的此类数据

关键字段是否已编入索引?@ʰᵈˑ不,它们不是,但是查询没有引用密钥。