1

关于如何查询 MongoDB 的新手问题。我想把每天收到的多个对象汇总到一个单日记录中。文档结构最终将包含 365 天的数据(每年,可能每年有一个新文档),格式如下:

{
"2012": {
    "9": {
        "1": {
            "attribute1": 42.1,
            "attribute2": 5.895,
            "attribute3": 2347,
            "attribute...n": 33076.875,
            "startFuel": [
                32976.75,
                33018.875,
                33041.375
            ],
            "startOdometer": [
                202748.9,
                202973,
                203100.2
            ],
            "endOdometer" : 209855.6
        },
        "10": {
            "attribute1": 363.90000000000003,
            "attribute2": 59.242000000000004,
            "attribute3": 20284,
            "attribute...n": 34335.375,
            "startFuel": [
                34161,
                34214.125,
                34245.25,
                34280.875
            ],
            "startOdometer": [
                209855.6,
                210166.4,
                210348.2,
                210555.7
            ],
            "endOdometer" : 210655.7
        }
    }
},
"_id": ObjectId("50b6838a6ef6585a9e51f2af"),
"key1": null,
"keu2": -1,
"key3": 572755
}

如您所见,每个文档属于一个实体,一年包含每个月,每个月都有每一天(只要有当天/月/年的数据)。

我正在为如何查询此文档格式而苦苦挣扎。我想使用聚合框架来平均文档中的值(对于单个实体),并在同一时间段内将它们聚合到多个文档/实体中。

例如,我想找到 8 月份每天行驶的平均英里数(对于每个实体,对于该月的每一天,从 endOdometer 中减去最低的 startOdometer 并平均该月的值)。(顺便说一句:startOdometer 是一个数组,允许我在不预先查询文档以查看它是否已经存在的情况下推送值)。

我们内部正在讨论是否需要使用 map/reduce 将所有聚合视图创建到我们的数据中,或者我们是否可以使用 map/reduce 创建日期摘要并使用聚合框架将数据拉到一起。我想知道这个数据结构将如何支持这种类型的查询,或者其他什么数据结构可能更适合让我们利用聚合框架来总结我们的数据。

4

1 回答 1

1

像这样的动态模式很难查询。您最好重新设计架构以使用固定键名并将动态内容留给值。

于 2013-06-23T15:06:07.947 回答