【发布时间】:2018-10-29 13:54:30
【问题描述】:
我有一个表格,里面有类似的数据
{
_id: ....
Name
...
"RoomStatusDetails": [
{
"StatusEntryId": ObjectId("5bd6ea81d2ccda0a780054da"),
"RoomId": "78163a07-76db-83c1-5c22-0749fab73251",
"CurrentStatus": ObjectId("5bd17295d2ccda11f0007765"),
"StartDate": ISODate("2018-10-09T22:00:00.0Z"),
"Notes": "Notes for in service",
"Discrepancy": "Discrepency",
"Waiver": "Waiver",
"TFlight": "T Flight",
"IsActive": "Inactive"
},
{
"StatusEntryId": ObjectId("5bd6ecf3d2ccda0a780054db"),
"RoomId": "78163a07-76db-83c1-5c22-0749fab73251",
"CurrentStatus": ObjectId("5bd17295d2ccda11f0007766"),
"StartDate": ISODate("2018-10-16T22:00:00.0Z"),
"Notes": "Out of service",
"Discrepancy": "",
"Waiver": "",
"TFlight": "",
"IsActive": "Active"
},
...
}
我已经编写了以下代码行,用于根据 RoomId 将 IsActive 字段更新为“非活动”
$this->collection->updateOne(array('_id' => new MongoDB\BSON\ObjectID($this->id), "RoomStatusDetails" =>
array('$elemMatch' => array("RoomId" => $this->RoomId))),
array('$set' => array("RoomStatusDetails.$.IsActive" => 'Inactive')), array("multi" => true, "upsert" => false));
上面的代码没有更新所有的 IsActive 字段。请帮忙!!!
【问题讨论】:
-
使用
update方法代替updateOne。 -
它不起作用..它抛出未定义的方法更新并且我使用 3.6。即使我使用 updateMany,它也不会抛出任何错误消息,但不会更新其他嵌入文档
-
使用
update时出现粘贴错误。
标签: mongodb mongodb-query mongodb-php php-mongodb