首页 > 解决方案 > 我不明白为什么我必须以特定方式查询 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] 等),因此无法访问用点表示法,因为那不是属性。这就是我的逻辑。

谢谢。

标签: javascriptmongodbmongoose

解决方案


从零开始的索引的点表示法只是他们选择的语法,不支持方括号语法。请参阅此处的文档


推荐阅读