javascript - 我不明白为什么我必须以特定方式查询 MongoDB 集合(点与括号表示法)
问题描述
所以我有这个猫鼬模式:
let userSchema = new mongoose.Schema({
username:
{type: String,
unique: true
},
password: String,
privileges:
[{
region: Number,
read: Number,
write: Number,
edit: Number
}]
});
我想查询数据库,所以我得到了 region = 1 的数据库。经过多次尝试,我得到了它 - 我必须使用privileges.0.region 才能到达那里。但我不知道为什么。
这些都是我尝试进行的所有查询,但我不明白为什么它不起作用。使用我的逻辑,特权[0]['region'] 和特权[0].region 应该可以工作,因为我正在选择具有 region 属性的数组的第一项。
任何人都可以向我解释整个事情吗?为什么这些查询不起作用而带有点的查询起作用?这对我来说很奇怪,因为点符号(据我所知)用于属性,权限应该是一个数组(权限 [0]、权限 [2]、权限 [3] 等),因此无法访问用点表示法,因为那不是属性。这就是我的逻辑。
谢谢。
解决方案
从零开始的索引的点表示法只是他们选择的语法,不支持方括号语法。请参阅此处的文档。
推荐阅读
- c++ - 搜索功能中没有返回名称
- javascript - 我如何使用 nativescript 按需加载功能
- javascript - 删除数组/视图中的最后一项时,iOS 上的 react-native-viewpager 问题
- php - 如何从两个表连接中选择一个值?
- javascript - 删除/归还所有角色的静音/取消静音角色
- reactjs - 尝试使用自定义钩子会给出错误“在声明之前使用块范围变量'X'”。
- java - 如何以编程方式获取 Spark 集群中所有节点的主机名
- macos - zsh:权限被拒绝:/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m MacOS
- node.js - 如何存储 websocket 连接以进行过滤?
- sql - SQL Recursive Queries,理解connect by子句上的“先验”表达式的问题