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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 - Fatal编程技术网

Mongodb 总结对象';在指定的条件下在数组中设置值

Mongodb 总结对象';在指定的条件下在数组中设置值,mongodb,mongodb-query,Mongodb,Mongodb Query,我收集了大量超过30万份文档,如下所示: { "_id" : 1, "emp_no" : 10031, "salaries" : [ { "salary" : 40000, "from_date" : "1991-09-01", "to_date" : "1992-08-31" }, { "salary" : 4085

我收集了大量超过30万份文档,如下所示:

{ 
    "_id" : 1, 
    "emp_no" : 10031, 
    "salaries" : [
        {
            "salary" : 40000, 
            "from_date" : "1991-09-01", 
            "to_date" : "1992-08-31"
        }, 
        {
            "salary" : 40859, 
            "from_date" : "1992-08-31", 
            "to_date" : "1993-08-31"
        }, 
        {
            "salary" : 41881, 
            "from_date" : "1993-08-31", 
            "to_date" : "1994-08-31"
        }, 
        {
            "salary" : 44191, 
            "from_date" : "1994-08-31", 
            "to_date" : "1995-08-31"
        }, 
        {
            "salary" : 47202, 
            "from_date" : "1995-08-31", 
            "to_date" : "1996-08-30"
        }, 
        {
            "salary" : 47606, 
            "from_date" : "1996-08-30", 
            "to_date" : "1997-08-30"
        }, 
        {
            "salary" : 50810, 
            "from_date" : "1997-08-30", 
            "to_date" : "1998-08-30"
        }, 
        {
            "salary" : 52675, 
            "from_date" : "1998-08-30", 
            "to_date" : "1999-08-30"
        }, 
        {
            "salary" : 54177, 
            "from_date" : "1999-08-30", 
            "to_date" : "2000-08-29"
        }, 
        {
            "salary" : 53873, 
            "from_date" : "2000-08-29", 
            "to_date" : "2001-08-29"
        }, 
        {
            "salary" : 56689, 
            "from_date" : "2001-08-29", 
            "to_date" : "9999-01-01"
        }
    ]
}
{ 
    "_id" : 2, 
    "emp_no" : 10033, 
    "salaries" : [
        {
            "salary" : 51258, 
            "from_date" : "1987-03-18", 
            "to_date" : "1988-03-17"
        }, 
        {
            "salary" : 54972, 
            "from_date" : "1988-03-17", 
            "to_date" : "1989-03-17"
        }, 
        {
            "salary" : 55410, 
            "from_date" : "1989-03-17", 
            "to_date" : "1990-03-17"
        }, 
        {
            "salary" : 56095, 
            "from_date" : "1990-03-17", 
            "to_date" : "1991-03-17"
        }, 
        {
            "salary" : 56038, 
            "from_date" : "1991-03-17", 
            "to_date" : "1992-03-16"
        }, 
        {
            "salary" : 57712, 
            "from_date" : "1992-03-16", 
            "to_date" : "1993-03-16"
        }, 
        {
            "salary" : 60433, 
            "from_date" : "1993-03-16", 
            "to_date" : "1993-03-24"
        }
    ]
}
{ 
    "_id" : 3, 
    "emp_no" : 10035, 
    "salaries" : [
        {
            "salary" : 41538, 
            "from_date" : "1988-09-05", 
            "to_date" : "1989-09-05"
        }, 
        {
            "salary" : 45131, 
            "from_date" : "1989-09-05", 
            "to_date" : "1990-09-05"
        }, 
        {
            "salary" : 45629, 
            "from_date" : "1990-09-05", 
            "to_date" : "1991-09-05"
        }, 
        {
            "salary" : 48360, 
            "from_date" : "1991-09-05", 
            "to_date" : "1992-09-04"
        }, 
        {
            "salary" : 50664, 
            "from_date" : "1992-09-04", 
            "to_date" : "1993-09-04"
        }, 
        {
            "salary" : 53060, 
            "from_date" : "1993-09-04", 
            "to_date" : "1994-09-04"
        }, 
        {
            "salary" : 56640, 
            "from_date" : "1994-09-04", 
            "to_date" : "1995-09-04"
        }, 
        {
            "salary" : 57621, 
            "from_date" : "1995-09-04", 
            "to_date" : "1996-09-03"
        }, 
        {
            "salary" : 59291, 
            "from_date" : "1996-09-03", 
            "to_date" : "1997-09-03"
        }, 
        {
            "salary" : 61793, 
            "from_date" : "1997-09-03", 
            "to_date" : "1998-09-03"
        }, 
        {
            "salary" : 62285, 
            "from_date" : "1998-09-03", 
            "to_date" : "1999-09-03"
        }, 
        {
            "salary" : 65332, 
            "from_date" : "1999-09-03", 
            "to_date" : "2000-09-02"
        }, 
        {
            "salary" : 66584, 
            "from_date" : "2000-09-02", 
            "to_date" : "2001-09-02"
        }, 
        {
            "salary" : 68755, 
            "from_date" : "2001-09-02", 
            "to_date" : "9999-01-01"
        }
    ]
}
工资是年薪。我需要知道所有员工在特定年份的收入。有没有不使用
$unwind
操作员的方法?因为如果我解开所有这些数组,将有超过280万个doument,我宁愿避免处理这么多doument
到目前为止,我提出了以下问题:

db.getCollection("tmp").find(
    {salaries: 
        {$elemMatch: 
            { "to_date": { $gte: "1989-01-01" } ,  
             "to_date": { $lte: "1989-01-01" } } 
        }
    }
)

但是这只会返回整个文档,我不知道如何对匹配的
工资
字段的值求和。

为什么不能使用聚合function@vicky如果可能的话,请告诉我使用哪种方法来避免
$unwind
,但我们需要使用聚合(组和总和)