代码之家  ›  专栏  ›  技术社区  ›  Strider

对同一数组字段应用多个更新运算符

  •  0
  • Strider  · 技术社区  · 4 年前

    MyCollectionModel.findByIdAndUpdate(
      _someId,
      {
        $pull: {
          arrField: { $nin: newListValues }
        },
        /* Either remove the old values as above, or unset the field:
        $unset: {
          arrField: 1
        },
        */
        $addToSet: {
          arrField: newListValues
        }
      },
      { new: true }
    )
    

    最后出现错误: Updating the path 'arrField' would create a conflict at 'arrField'

    是否有方法重写 arrField

    1 回复  |  直到 4 年前
        1
  •  1
  •   Hafez    4 年前

    addToSet .

    const newListValues = ['I am a string inside an array.'];
    
    MyCollectionModel.findByIdAndUpdate(
      _someId,
      {
        arrField: newListValues
      },
      { new: true }
    );
    

    如果 newListValues 不是数组,在尝试设置它之前,需要将新值设置为数组。

    const newListValues = 'I am a string';
    
    MyCollectionModel.findByIdAndUpdate(
      _someId,
      {
        arrField: [newListValues]
      },
      { new: true }
    );