[MONGODB] MongoDB를 업데이트 깊은 배열
MONGODBMongoDB를 업데이트 깊은 배열
내 몽고 데이터베이스라는 이름의 음악에서 다음 개체가 있습니다. 장르는 그런 지 어디를 업데이트 할 밴드 이름은 너바나입니다 앨범 이름은 신경 끄시입니다 트랙 순서 1
와 "냄새처럼 틴 스피릿!"에 트랙의 이름을 변경합니다. 나는 위치 연산자와 함께 연주했지만, 한 수 없습니다 꽤 이 밖으로 그림.
{
genre : "Grunge",
bands : [ {
name : "Nirvana",
albums : [ {
name : "Nevermind",
tracks : [ {
name : "Smell Like Teen Spirit",
order : 1,
duration : 301
},
{
name : "In Bloom",
order : 2,
duration : 254
} ]
},
{
name : "In Utero",
tracks : [ {
name : "Server the Servants",
order : 1,
duration : 216
},
{
name : "Scentless Apprentice",
order : 2,
duration : 254
} ]
} ]
},
{
name : "Karma++ : A Nirvina Tribute Band",
albums : [ {
name : "Nevermind",
tracks : [ {
name : "Smell Like Teen Spirit",
order : 1,
duration : 301
},
{
name : "In Bloom",
order : 2,
duration : 254
} ]
},
{
name : "In Utero",
tracks : [ {
name : "Server the Servants",
order : 1,
duration : 216
},
{
name : "Scentless Apprentice",
order : 2,
duration : 254
} ]
} ]
} ]
}
해결법
-
==============================
1.불행하게도, 현재는 하나의 "$"위치에 따라 업데이트를 사용하는 경우에만 가능하다. 이 설명서의 예와 유사 하나의 내장 배열에 업데이트를, 제한 : http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator (게시물에서, 당신이 이미 발견했지만, 나는이 글을 읽는 다른 사용자의 이익을 위해 링크를 포함 한 것 같습니다.)
불행하게도, 현재는 하나의 "$"위치에 따라 업데이트를 사용하는 경우에만 가능하다. 이 설명서의 예와 유사 하나의 내장 배열에 업데이트를, 제한 : http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator (게시물에서, 당신이 이미 발견했지만, 나는이 글을 읽는 다른 사용자의 이익을 위해 링크를 포함 한 것 같습니다.)
업데이트를하기 위해서는, 당신은 두 점의 위치를 알고 있어야합니다 세 가지를 다음과 같이하십시오 "밴드"배열의 밴드의 위치, 앨범 배열의 앨범의 위치, 또는 트랙의 위치를 은 "트랙"배열이다.
이이 기능에 대한 기능 요청이며, (이 변경 될 수 있지만) 그것은 버전 2.3.0 예정이다. https://jira.mongodb.org/browse/SERVER-831 "위치 상 운영자 매칭 중첩 배열"
당분간를 들어, 세 개의 배열이 아웃 하위 문서의 위치를 알고 있어야합니다 :
db.music.update({genre : "Grunge", "bands.name" : "Nirvana"}, {$set:{"bands.$.albums.0.tracks.0.name":"Smells Like Teen Spirit!"}}) db.music.update({genre : "Grunge", "bands.0.albums.name" : "Nevermind"}, {$set:{"bands.0.albums.$.tracks.0.name":"Smells Like Teen Spirit!"}})
또는
db.music.update({genre : "Grunge", "bands.0.albums.0.tracks.order" : 1}, {$set:{"bands.0.albums.0.tracks.$.name":"Smells Like Teen Spirit!"}})
from https://stackoverflow.com/questions/10341151/mongodb-update-deep-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 포함 된 배열의 갱신 후 새 값을 다시 얻으려면? (0) | 2019.12.15 |
---|---|
[MONGODB] 몽고에서 $ 정규식 및 $ 또는 연산자를 결합 (0) | 2019.12.15 |
[MONGODB] 어떻게 몽고 날짜와 문서를 삽입? (0) | 2019.12.15 |
[MONGODB] 몽고는 : 어떻게 외부 중량 정렬하려면 (0) | 2019.12.15 |
[MONGODB] 기준에 일치하는 모든 객체의 모든 배열 요소 수를 계산하여 MongoDB (0) | 2019.12.15 |