【发布时间】:2013-01-20 16:01:54
【问题描述】:
我遇到了一个问题,我需要更新在一个更大数组中找到的特定字段,该数组包含在一个匹配 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 的文档,仅在occupied.Greece 数组中搜索具有"deadline": {$gt: ISODate(current-date)} 的元素,并将它们各自的“已完成”字段更改为true。
我尝试了 $ 和 $elemMatch 运算符,但它们只匹配查询中的第一个数组元素,而我需要它根据给定条件匹配 all 符合条件的元素,并且无需多次运行相同的查询或在客户端处理数组即可进行更新。
是否没有针对单个文档中的通用更新的服务器端解决方案?我正在使用 PHP 进行开发,尽管对此的解决方案应该是通用的。
【问题讨论】:
标签: mongodb