【发布时间】:2015-12-29 04:22:34
【问题描述】:
我想计算每天的分配计数,通过使用 assigned_on 上的 day 分组我可以获得每天的分配计数,但这些是唯一计数每天。
我还希望将昨天或几天前分配但尚未释放的床包括在内。
例如,我有以下记录
{
"assigned_on":ISODate("2015-12-01T00:00:00Z"),
"released_on":ISODate("2015-12-01T14:01:23Z"),
"bed_id":1
},
{
"assigned_on":ISODate("2015-12-01T00:00:00Z"),
"released_on":ISODate("2015-12-04T14:01:23Z"),
"bed_id":2
},
{
"assigned_on":ISODate("2015-12-01T00:00:00Z"),
"released_on":ISODate("2015-12-01T14:01:23Z"),
"bed_id":3
},
{
"assigned_on":ISODate("2015-12-02T00:00:00Z"),
"released_on":ISODate("2015-12-02T14:01:23Z"),
"bed_id":1
},
{
"assigned_on":ISODate("2015-12-02T00:00:00Z"),
"released_on":ISODate("2015-12-02T14:01:23Z"),
"bed_id":3
},
{
"assigned_on":ISODate("2015-12-03T00:00:00Z"),
"released_on":ISODate("2015-12-03T14:01:23Z"),
"bed_id":1
},
{
"assigned_on":ISODate("2015-12-03T00:00:00Z"),
"released_on":ISODate("2015-12-03T14:01:23Z"),
"bed_id":3
}
当前查询
db.test.aggregate([
{
"$match": {
"assigned_on": {
"$gte": ISODate("2015-12-01T00:00:00Z"),
"$lt": ISODate("2015-12-03T23:59:59Z")
}
}
},
{
"$group": {
"_id": {
"$dayOfMonth": "$assigned_on"
},
"Count": {
"$sum": 1
}
}
}
])
按照 day 对assigned_on 进行分组,我在第 1、2 和 3 天得到上述结果,但我想将第 1、2 和 3 天的计数结果中的每个结果都设为 3,因为在第二记录 released_on 日期是 12 月 4 日,这意味着床 2 在第 1、2、3 和 4 天被占用。
当前输出:
{ "_id" : 3, "Count" : 2 }
{ "_id" : 2, "Count" : 2 }
{ "_id" : 1, "Count" : 3 }
预期输出:
{ "_id" : 3, "Count" : 3 }
{ "_id" : 2, "Count" : 3 }
{ "_id" : 1, "Count" : 3 }
编辑:_id 是 12 月 1 日、12 月 2 日和 12 月 3 日的日期,count 是在各自日期分配的床位数量
帮助或指针会很有帮助
【问题讨论】:
-
你的问题很难理解
-
如果你观察我的样本数据,床 2 的记录显示 assignment_on 为 12 月 1 日,released_on 为 12 月 4 日,这意味着床在 12 月 1 日、2 日、3 日和 4 日也被占用。目前我可以得到每一天的计数,就像你在结果中看到的那样,12 月 1 日计数为 3,12 月 2 日计数为 2,12 月 3 日计数为 2。但我希望输出为 12 月 3 日计数 3,12 月 2 日计数 3, 12 月 3 日计数 3,因为床 2 被占用了 4 天,即 1、2、3 和 4。现在清楚了吗?
-
您能发布您的预期输出吗?我真的不明白你要做什么
-
大卫我已经添加了它
标签: mongodb date mongodb-query aggregation-framework