mongodb 蒙戈无效参数错误:更新文档需要原子运算符

4nkexdtk  于 2022-12-22  发布在  Go
关注(0)|答案(2)|浏览(190)

我正在学习MongoDB的课程。下面是我的文档列表,它位于一个名为"flightData"的集合中。下面是查找查询的结果:

flights> db.flightData.find()
[
  {
    _id: ObjectId("611aaa1c4a0269583c8d81b0"),
    aircraft: 'AirBus A308',
    departingFrom: 'Mumbai',
    arrivalStation: 'Moscow',
    departureDate: '24/09/2021',
    departureTime: '01:44',
    arrivingAt: '12:00',
    isOneWay: false,
    status: {
      description: 'on time',
      lastUpdated: 'One hour ago',
      details: { contact: 'John Doe' }
    }
  },
  {
    _id: ObjectId("611aaa554a0269583c8d81b1"),
    aircraft: 'AirBus A308',
    departingFrom: 'Kolkata',
    arrivalStation: 'Stockholm',
    departureDate: '24/09/2021',
    departureTime: '01:44',
    arrivingAt: '12:00',
    isOneWay: false,
    status: {
      description: 'on time',
      lastUpdated: 'One hour ago',
      details: { contact: 'Cool User' }
    }
  }
]

当他们通过类似于下面的示例显示update和updateMany之间的区别时:

flights> db.flightData.update({_id:ObjectId("611aaa554a0269583c8d81b1")},{"delayed":false})

在讲座中,它的工作。然而,在我的情况下,它抛出以下错误:
蒙戈无效参数错误:更新文档需要原子运算符
有人能解释一下这种行为吗?是我的版本不支持还是其他什么?
我使用的是MongoDB 5.0.2和Mongosh 1.0.5

vxqlmq5t

vxqlmq5t1#

如果要将“delayed”字段添加到文档中,则需要使用$set操作符

db.flightData.update({_id:ObjectId("611aaa554a0269583c8d81b1")},{$set:{"delayed":false}})

如果要替换文档,应使用replaceOne
在mongodb3.2中添加此命令是为了避免在您打算更新字段时意外替换整个文档

4sup72z8

4sup72z82#

这可能会帮助一些人这样写作为答案。
在我的例子中,我正在执行批量写入操作,并且错过了我试图在Mongoose架构中更新的字段,这导致了这个问题。在更正Mongoose架构后,问题得到了解决。
因此,如果您使用的是Mongoose,请验证在Schema中配置了更新中使用的字段。

相关问题