小编Vol*_*kov的帖子

MongoDB - $ week函数和聚合中的第一天

我使用$ project运算符从Date中提取周部分,然后在聚合管道中按周进行分组.

{ $project: { 
    year: { $year: [ "$datetime" ] }, 
    week: { $week: [ "$datetime" ] }, 
    ....
    }
},
....
{ $group: { 
    _id: { 
        year: "$year", 
        week: "$week", 
        },
        .....
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我用它的$周运算符总是将星期日视为一周的第一天,我们使用星期一作为我们所在地的第一天.因此,按周分组的结果对我来说总是不正确的.有什么方法可以解决这个问题,或者已知的解决方法?

mongo跟踪系统中现有请求似乎一年多没有解决(是否真的很少需要选项?)欢迎任何可能的选择.也许有可能在javascript中创建一些自定义函数并在某处添加/替换它?

mongodb

6
推荐指数
2
解决办法
5188
查看次数

MongoDB $project 和索引使用

我使用聚合框架对一些数据进行分组。据观察,当使用 $project pipeline stage 时,它​​会以某种方式阻止以下 $match 使用索引。我在字段“timestamp”上有一个索引,集合包含 500 000 条记录。

如果我使用以下命令和管道:

db.collection.runCommand('aggregate', {pipeline: [ { "$match" : { "timestamp" : { "$gt" : 1388425361294 , "$lt" : 1388443361294}}}  ], explain: true})
Run Code Online (Sandbox Code Playgroud)

执行计划与预期基本一致,即扫描了 4 个文档。摘自“解释”:

"cursor" : {
        "cursor" : "BtreeCursor timestamp_1",
        "isMultiKey" : false,
        "n" : 4,
        "nscannedObjects" : 4,
        "nscanned" : 4,
        "nscannedObjectsAllPlans" : 4,
        "nscannedAllPlans" : 4,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "millis" : 0,
        "indexBounds" : {
                "timestamp" : [ …
Run Code Online (Sandbox Code Playgroud)

mongodb

5
推荐指数
1
解决办法
3710
查看次数

标签 统计

mongodb ×2