[MONGODB] 어떻게 MongoDB를 내부 목록에 요소를 삽입?
MONGODB어떻게 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'}
2 : 나는 ID로 목록에서 요소의 항목에 추가 할 수 있습니다.
해결법
-
==============================
1.$ 누르는 것 그 일을하는 한 가지 방법 :
$ 누르는 것 그 일을하는 한 가지 방법 :
db.col.update( { name: 'doc', 'list.id': 2 }, {$push: {'list.$.items': {id: 5, name: 'item5'}}} )
http://docs.mongodb.org/manual/reference/operator/push/
또한 같은 다른 사업자와 $ 푸시를 대체 할 수있다 (아마도) $ addToSet 당신이 찾고있는 정확한 결과를 얻을 수 있습니다.
-
==============================
2.당신은이를 사용할 수 있습니다 -
당신은이를 사용할 수 있습니다 -
> var toInsert = {id: 5, name: 'item6'} > db.abc.update( { name: 'myDoc', list: { $elemMatch: { id: 2 } } }, { $addToSet: { 'list.$.items': toInsert } } )
쿼리 부분은 2. 그런 다음 우리가 배열 인덱스에 새로운 요소를 추가 $ 위치 요소를 사용 = ID로 목록 배열에서 문서를 찾을 수 있습니다.
위치 $ 연산자를 참조하십시오
{$ elemMatch : {ID : 2}} 또한 목록을 대체 할 수 2 단지 'list.id'와.
당신이 당신의 배열의 여러 요소를 기반으로 업데이트 할 때 $ elemMatch을 사용하면 더 좋을 것이다. 예를 들어, 귀하의 키워드와 일치하는 배열의 말 길이의 ID와 일부 다른 필드 인 경우 경우 : -
list: {$elemMatch: {id: 2, length: 5}}
from https://stackoverflow.com/questions/13987365/how-to-insert-an-element-to-mongodb-internal-list by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] mongod를 사용하여 UTC에 날짜를 저장할 때 어떻게 시간대의 문제를 다루는? (0) | 2019.12.13 |
---|---|
[MONGODB] MongoDB의 중첩 배열 쿼리 (0) | 2019.12.13 |
[MONGODB] MongoDB를에 findOne를 사용하면 최대 ID를 가진 요소를 얻을 수 (0) | 2019.12.13 |
[MONGODB] 문서에서 일부 필드를 제외하는 방법 (0) | 2019.12.13 |
[MONGODB] 몽구스 : 깊은 인구 (채워진 필드를 채울) (0) | 2019.12.13 |