MongoDB v2.2.3의 특정 기준과 일치하는 더 큰 배열에 포함 된 배열에서 발견 된 특정 필드를 업데이트해야하는 문제가 있습니다.MongoDB 조건을 충족하는 서브 어레이 필드 업데이트
다음 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 인 문서를 찾으려면 "deadline": {$gt: ISODate(current-date)}
이있는 요소에 대해서만 occupied.Greece
배열을 검색하고 개별 "fulfilled"필드를 true로 변경하십시오.
나는 $
및 $elemMatch
연산자를 시도했지만 그들은 단지 하나의 쿼리에서 첫 번째, 배열 요소 나 주어진 기준에 따라 모든 자격 요소와 일치하고 동일한 쿼리를 실행하지 않고 업데이트를 만들기 위해 필요한 반면 일치 여러 번 또는 배열 클라이언트 측을 처리해야합니다.
일반 문서 업데이트를위한 서버 측 솔루션은 단일 문서에 없습니까? 이 솔루션은 보편적이어야하지만 PHP를 사용하여 개발 중입니다.
적어도이 더러운 솔루션을 원했습니다. 그럼에도 불구하고 jira 링크를 가져 주셔서 감사합니다. –