MongoDB를 사용하면서로드 블록을 실행 한 것으로 보입니다. 내 데이터베이스 구조를 수정하지 않고도 주변에 어쨌든 있는지 여부를 알고 싶습니다. 내가 속성의 특정 tag_ids를 업데이트하는 방법을 알아낼 수없는 문제로 실행하고서브 그룹의 몽고 업데이트
Company=
{
_id:1,
properties:[
{
property_id: 1
tags : [
{
tag_id: 1
tag_value: 1000
channels: [
{
channel_id:1
channel_name:"test1"
},
{
channel_id:2
channel_name:"test2"
}]
},
{
tag_id:2
tag_value: 2500
channels: [
{
channel_id:2
channel_name:"test2"
},
{
channel_id:3
channel_name:"test3"
}]
}]
},
{
property_id: 2
tags : [
{
tag_id: 3
tag_value: 500
channels: [
{
channel_id:1
channel_name:"test1"
},
{
channel_id:3
channel_name:"test3"
}]
},
{
tag_id: 4
tag_value: 5000
channels: [
{
channel_id:1
channel_name:"test1"
}]
}]
}]
}
다음과 같이 지금 내 데이터베이스 구조입니다. 예를 들어, 속성 2의 tag_id 4 값을 100으로 변경하고 싶습니다. 또는 tag_id 3의 채널 배열에 채널을 추가하려고합니다.
무엇을하고 싶은지는 다음과 같습니다.
db.company.update({_id:1, "properties.property_id":2, "tags.tag_id":4}, {"properties.$.tags.$.tag_value":100});
그러나 현재 MongoDB의 현재 버전에서는 지원되지 않으며 이미 JIRA에 있습니다. 그래서 내 질문에 어쨌든 당신이 그것을 액세스하기 위해 두 가지 조건을 지정해야하는 문서의 가치를 업데이 트하는 것입니다. 나는 properties.1.tags.0을 할 수 있다는 것을 알고 있습니다. 그러나 배열의 순서를 알 수는 없으며 질의는 프로그래밍 방식으로 실행됩니다.
어떤 도움도 좋을 것입니다. 심지어 테이블을 재구성해야하는 구조입니다.
때문에 (모든 레벨이) 모든 내부 배열의 외부 요소의 모든 데이터를 반복하는 요소에 대해, 당신은
업데이트 어레이 배열에 중첩하여 MongoDB 불량지지를 받고; 필자가 언급 한 것처럼 수치 인덱스를 지정하지 않고는 아무 것도 할 수 없다. 가장 좋은 방법은 스키마를 재사용/병합하여 스키마를 방지하는 것입니다. – JohnnyHK
그게 내가 생각한대로, MongoDB가 중첩 된 문서에 대한 지원을 곧 증가시킬 수 있기를 바랍니다. – Eumcoz