요소를 MongoDB 내부 목록에 삽입하는 방법은 무엇입니까?
다음 문서가 MongoDB에 저장되어 있습니다.
{
name: 'myDoc',
list: [
{
id:1
items:[
{id:1, name:'item1'},
{id:2, name:'item2'}
]
},
{
id:2
items:[
{id:1, name:'item1'},
{id:3, name:'item3'}
]
}
]
}
다음을 사용하여 '목록'에 요소를 추가하는 방법을 찾았습니다.$addToSet
하지만 특정 '항목' 목록에 항목을 추가할 방법을 찾을 수 없었습니다.
예를 들어, 다음과 같은 정보를 얻을 수 있습니다.
{id:5, name:'item5'}
그리고 나는 그것을 id:2로 목록에 있는 요소의 항목에 추가하고 싶습니다.
한 가지 방법은 다음과 같습니다.$push
:
db.col.update(
{ name: 'doc', 'list.id': 2 },
{$push: {'list.$.items': {id: 5, name: 'item5'}}}
)
http://docs.mongodb.org/manual/reference/operator/push/
교체할 수도 있습니다.$push
(계속)과 같은 다른 연산자와 함께.$addToSet
찾고 있는 것과 유사한 결과를 얻을 수 있습니다.가장 큰 차이점은$push
새 요소를 목록에 추가하는 반면,$addToSet
요소가 없는 경우 요소를 추가합니다(유일한 요소 집합).
사용할 수 있습니다.
> var toInsert = {id: 5, name: 'item6'}
> db.abc.update(
{ name: 'myDoc', list: { $elemMatch: { id: 2 } } },
{ $addToSet: { 'list.$.items': toInsert } }
)
그query
부품이 문서를 찾을 것입니다.list
와 일치하는.id = 2
그러면 우리는$
위치 요소 - 해당 배열 인덱스에 새 요소를 추가합니다.
참조
교체할 수도 있습니다.list: {$elemMatch: {id: 2}}
정당하게'list.id': 2
.
그러나 어레이의 여러 요소를 기반으로 업데이트하려면 를 사용하는 것이 더 좋습니다.예를 들어, 일치 기준이 다음과 같은 경우id
그리고 배열의 다른 분야는 말합니다.length
: -
list: {$elemMatch: {id: 2, length: 5}}
언급URL : https://stackoverflow.com/questions/13987365/how-to-insert-an-element-to-mongodb-internal-list
'programing' 카테고리의 다른 글
실행 파일이 Xcode에서 잘못된 사용 권한으로 서명되었습니다. (0) | 2023.05.19 |
---|---|
윈도우즈용 Gitbash 드라이브 변경 (0) | 2023.05.19 |
Windows에서 pip에서 사용하는 CA Store에 사용자 지정 CA 루트 인증서를 추가하는 방법은 무엇입니까? (0) | 2023.05.14 |
Node.js 배포 설정/구성 파일을 저장하는 방법은 무엇입니까? (0) | 2023.05.14 |
T-SQL의 부울 'NOT'가 '비트' 데이터 유형에서 작동하지 않습니까? (0) | 2023.05.14 |