如何在键是数字时访问子文档值

时间:2017-02-13 10:41:32

标签: mongodb

我有一个看起来像这样的mongo文件

{
    "_id" : ObjectId("58a18bdd7313101c38baa06d"),
    "date" : "2017-02-12",
    "previsions" : {
        "1000" : {
            "tmin" : "3",
            "tmax" : "13"
        },
        "1090" : {
            "tmin" : "3",
            "tmax" : "13"
        },
        "1100" : {
            "tmin" : "-1",
            "tmax" : "5"
        },
        "1110" : {
            "tmin" : "3",
            "tmax" : "12"
        },
        "1120" : {
            "tmin" : "3",
            "tmax" : "14"
        }
    },
    "created_at" : ISODate("2017-02-13T10:35:09.804Z")
}

并且我想访问其中一个值的tmin / tmax,不幸的是,因为键是数字,mongo驱动程序不允许我这样做:

db.Temperatures.findOne().previsions.1000

返回错误:

2017-02-13T11:38:49.371+0100 E QUERY    [thread1] SyntaxError: missing ; before statement @(shell):1:36

有没有办法绕过这个问题?

非常感谢。

2 个答案:

答案 0 :(得分:3)

如果要访问使用数字字符的对象中的键,可以简单地将它们作为字符串传递 - 对象始终将其键存储为字符串。

db.Temperatures.findOne().previsions['1000'] 

那将为您提供此输出 -

{
  "tmin": "3",
  "tmax": "13"
}

答案 1 :(得分:1)

根据MongoDB文档

  

投影文档限制为所有匹配返回的字段   文档。

请尝试在MongoDB shell中执行以下查询

{{1}}