我正在学习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
2条答案
按热度按时间vxqlmq5t1#
如果要将“delayed”字段添加到文档中,则需要使用$set操作符
如果要替换文档,应使用replaceOne
在mongodb3.2中添加此命令是为了避免在您打算更新字段时意外替换整个文档
4sup72z82#
这可能会帮助一些人这样写作为答案。
在我的例子中,我正在执行批量写入操作,并且错过了我试图在Mongoose架构中更新的字段,这导致了这个问题。在更正Mongoose架构后,问题得到了解决。
因此,如果您使用的是Mongoose,请验证在Schema中配置了更新中使用的字段。