📅  最后修改于: 2023-12-03 15:03:00.965000             🧑  作者: Mango
在 MongoDB 中,所有位置运算符 ($[]) 可以用来更新嵌套数组中的所有元素,或者查询嵌套数组中所有满足条件的元素。
所有位置运算符 ($[]) 的基本语法如下:
{ <array>: { $[]: <update> } }
其中,
例如,对于一个包含嵌套数组的文档:
{
"_id": 1,
"grades": [
{
"grade": 80,
"mean": 75,
"std": 8
},
{
"grade": 85,
"mean": 90,
"std": 5
}
]
}
如果想要对 grades 数组中的所有文档中的 grade 字段进行加 5 操作,可以使用所有位置运算符 ($[]):
db.scores.update(
{},
{ $inc: { "grades.$[].grade" : 5 } }
)
在这个示例中,我们将所有匹配条件的文档(这里使用了空对象 {})中 grades 数组中的所有文档的 grade 字段进行了加 5 操作。
除了用于更新操作,所有位置运算符 ($[]) 也可以用于查询操作。例如,如果需要查询嵌套数组中所有满足条件的元素,可以使用以下语法:
db.scores.find(
{ "grades.$[].mean" : { $gt:90 } }
)
在这个示例中,我们使用了所有位置运算符 ($[]) 来匹配 grades 数组中所有文档中的 mean 字段,并使用条件 $gt:90 来筛选出所有 mean 字段大于 90 的元素。