我遇到了一个问题,我需要更新在更大数组中包含的数组中找到的特定字段,该数组与MongoDB v2.2.3中的某些条件匹配。
我有以下 mongodb 示例文档。
{
_id: ObjectId("50be30b64983e5100a000009"),
user_id: 0
occupied: {
Greece: [
{
user_id: 3,
deadline: ISODate("2013-02-08T19:19:28Z"),
fulfilled: false
},
{
user_id: 4,
deadline: ISODate("2013-02-16T19:19:28Z"),
fulfilled: false
}
],
Italy: [
{
user_id: 2,
deadline: ISODate("2013-02-15T19:19:28Z"),
fulfilled: false
}
]
}
}
数组中的每个国家/地区occupied
都有自己的一组数组。
我想要做的是找到user_id
为 0 的文档,仅在数组中搜索具有并将其各个“已完成”字段更改为 trueoccupied.Greece
的元素。"deadline": {$gt: ISODate(current-date)}
我尝试了$
and$elemMatch
运算符,但它们只匹配查询中的第一个数组元素,而我需要它根据给定条件匹配所有符合条件的元素并进行更新,而无需多次运行相同的查询或处理数组客户端。
是否没有针对单个文档中的通用更新的服务器端解决方案?我正在使用 PHP 进行开发,尽管对此的解决方案应该是通用的。