mongodb - mongo点符号歧义

标签 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"}

想法?经历?传统智慧就是不这样做吗?

最佳答案

诸如“address.state”之类的键是不合法的。来自 here :

Field names cannot contain dots (i.e. .) or null characters, and they must not start with a dollar sign (i.e. $).

关于mongodb - mongo点符号歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10333540/

相关文章:

node.js - 如何将 geoNear 与 mongoose 一起应用并获取两个坐标之间的距离

java - 获取/返回MongoDb中新插入或新修改的文​​档(使用java驱动程序)

c# - 是否可以使用包含元素的 ActionLink?

performance - 与填充一起使用时 Mongoose 查询性能低下

angularjs - 使用谷歌登录登录我的网站后获取谷歌帐户信息(使用卫星库登录)

mongodb - 如何在 MongoDb 中存储动态生成的表单的结果?

php - 正确的 SQL 语法(PHP 和 MySQL 组合)

c++ - int a[] = {1,2,};为什么允许在初始化列表中使用尾随逗号?

java - 如何使用 Java 驱动程序为 MongoDB 构建 $or 查询?

c# - MongoDB C# 驱动程序 - 如何查询子文档数组的属性