mongo dot符号模糊

时间:2012-04-26 12:36:09

标签: mongodb syntax mongodb-query

我喜欢MongoDB,并且我发现了一些不明确的模糊性,我想知道是否有人以前见过这个并且可能知道答案: - )。

在mongo中,为了达到子对象,你使用点符号,例如:

db.persons.find({ "address.state" : "CA" })

这很简单。如何(如果它完全没有)mongo处理之间的区别:

{
    "address" { "state" : "CA" }
}

{
    "address.state" : "CA"
}

因为据我所知,点在键中是合法的。此外,我相信这也是一个法律文件:

{
    "address" { "state" : "A" },
    "address.state" : "B"
}

在这种情况下,我可以看到此查询返回"A""B"

db.persons.find({}, {"address.state"}) // all docs selecting address.state as result.

我想象数组也会出现类似的潜在问题:

{"a":["test"]}

可以通过以下方式访问:

{"a.0"}

当然

{"a" {"0" : "test"} }

也可以通过以下方式访问:

{"a.0"}

想法?经验?传统智慧根本就不是这样做的吗?

1 个答案:

答案 0 :(得分:8)

诸如“address.state”之类的密钥不合法。来自here

  

字段名称不能包含点(即 . )或空字符,并且不得以美元符号开头(即 $ )。