mongo dot符号模糊

Eva*_*ran 3 syntax mongodb mongodb-query

我喜欢MongoDB,并且发生了一些小的模糊性,我想知道是否有人之前已经看过这个并且可能会知道答案:-).

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

db.persons.find({ "address.state" : "CA" })
Run Code Online (Sandbox Code Playgroud)

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

{
    "address" { "state" : "CA" }
}
Run Code Online (Sandbox Code Playgroud)

{
    "address.state" : "CA"
}
Run Code Online (Sandbox Code Playgroud)

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

{
    "address" { "state" : "A" },
    "address.state" : "B"
}
Run Code Online (Sandbox Code Playgroud)

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

db.persons.find({}, {"address.state"}) // all docs selecting address.state as result.
Run Code Online (Sandbox Code Playgroud)

类似的潜在问题也可能出现在我想象的阵列中:

{"a":["test"]}
Run Code Online (Sandbox Code Playgroud)

可以通过以下方式访问:

{"a.0"}
Run Code Online (Sandbox Code Playgroud)

而且当然

{"a" {"0" : "test"} }
Run Code Online (Sandbox Code Playgroud)

也可以访问:

{"a.0"}
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*yHK 8

诸如"address.state"之类的密钥是不合法的.从这里:

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