无法使用$ []位置运算符更新数组。得到错误

时间:2018-04-26 08:56:45

标签: mongodb

我正在尝试更新此MongoDB官方教程link中指定的数组。我遵循的步骤是:

  1. 创建集合名称测试:

  2. 在集合中插入文档:

      

    db.getCollection('test')。insert({“_ id”:2,“grade”:[{“grade”:90,   “mean”:75,“std”:6},{“grade”:87,“mean”:90,“std”:3},{   “等级”:85,“均值”:85,“标准”:4}]});

         

    db.getCollection('test')。insert({“_ id”:1,“grade”:[{“grade”:80,   “mean”:75,“std”:6},{“grade”:85,“mean”:90,“std”:4},{   “等级”:85,“均值”:85,“标准”:6}]});

  3. 尝试按照教程中的指定更新数组:

      

    db.getCollection( '试验')。更新(          {},          {$ inc:{“grade。$ []。std”: - 2}},          {multi:true}       )

  4. 根据教程,它必须更新文档。但是,我收到了一个错误:

    cannot use the part (grades of grades.$[].std) to traverse the element ({grades: [ { grade: 80.0, mean: 75.0, std: 6.0 }, { grade: 85.0, mean: 90.0, std: 4.0 }, { grade: 85.0, mean: 85.0, std: 6.0 } ]})
    

    我正在使用MongoDB 3.4有谁知道解决方案?

1 个答案:

答案 0 :(得分:0)

使用$[] positional operator更新嵌套数组元素... 它将修改指定数组字段中的所有元素。

{{1}}