애트리뷰트의 임베디드 임베디드 값을 업데이트 할 수 있는지 궁금합니다.임베디드 임베디드 애트리뷰트 (MongoDB)의 값을 수정하십시오.
예를 들어, 나는 다음과 같은 문서가있는 경우 :
{
_id: ObjectId("5372523e4f611ef8255c5735"),
places: [
{
idPlace: 2,
namePlace: "Name of the place 2",
typePlace: "Type of the place 2"
},
screens: [
{
idScreen: 1,
nameScreen: "Name 1 of the screen",
statusScreen: false
},
{
idScreen: 2,
nameScreen: "Name 2 of the screen",
statusScreen: false
},
{
idScreen: 3,
nameScreen: "Name 3 of the screen",
statusScreen: false
}
},
{
idPlace: 3,
namePlace: "Name of the place 3",
typePlace: "Type of the place 3"
},
screens: [
{
idScreen: 5,
nameScreen: "Name 5 of the screen",
statusScreen: false
},
{
idScreen: 6,
nameScreen: "Name 6 of the screen",
statusScreen: false
},
{
idScreen: 7,
nameScreen: "Name 7 of the screen",
statusScreen: false
}
}
]
}
을 내가 true
에 'idScreen': 5
의 속성 'statusScreen'
의 값을 수정하고 싶었다. 그래서 (포스트 Updating embedded document property in Mongodb에 따라) 다음 명령을 시도 :
db.mycollection.update( {'places.screens': {$elemMatch: {'idScreen': 5} }}, { $set: { "online": true }}, { multi: true });
을하지만 내 문서의 루트 나에게 속성 'online': true
을 만들어 내 원하는 속성의 값을 수정하지 않습니다.
무엇이 잘못 되었습니까?
최저 루이는 이론적으로
주셔서 감사합니다 정말 빠른 답변에 대한 많은 특정 요소를 업데이트합니다. 그래서 나는 2 개의'$ '로 내 속성에 접근 할 수 없다는 것을 알았고, {places.screens.idScreen': 5}로 모든 문서를 검색 할 수 있다는 것을 알았지 만, 내 속성의 중첩 된 값을 수정하는 방법 'idScreen : 5' 제발? – LoicDpointgroup
set 문을 {$ set : "places.0.screens.0.statusScreen": true}} 또는 이와 유사한 것으로 바꾸어 특정 중첩 된 중첩 항목 –
을 업데이트합니다. db.mycollection.update ({ 'places.screens.idScreen ': 5}, {$ set : "places.0.screens.0.statusScreen": true}}, {multi : true});'스크린 '서브 문서의 루트에 속성을 생성합니다. 그리고 다음과 같이 : db.mycollection.update ({ 'places.screens.idScreen': 72}, {$ set : "places. $ screens.0.statusScreen": true}}, {multi : true}); 화면 서브 문서의 첫 x 째 속성 값을 변경합니다. 나는 당신에게 올바른 솔루션 덕분에 가까운 것 같아요 ... 내 'idScreen': 5가있는 인덱스 위치를 검색하는 방법을 찾아야합니다. – LoicDpointgroup