[MONGODB] MongoDB를이 - 중첩 된 배열에서 객체를 업데이트
MONGODBMongoDB를이 - 중첩 된 배열에서 객체를 업데이트
{
"_id": "xPBc4By8FemDwTPqH",
"u": {
"_id": "6PoZawHZcQz4Gwzcv",
"username": "michael"
},
"friends": [
{
"u": {
"_id": "eGqDjAjjtYADbuSnn",
"username": "michael",
"name": "michael"
}
},
{
"u": {
"_id": "k4gKCGwYryXDMMHvs",
"username": "joyce",
"name": "joyce"
}
}
]
}
나는 "friends.u.username"의 이름을 업데이트하려면 : "마이클"의 이름입니다 "안녕하세요", 어떻게 그것을 할 필요가있다.
해결법
-
==============================
1.이름 필드를 변경하려면 갱신에 $ 위치 연산자와 함께 $ 세트 연산자를 적용합니다.
이름 필드를 변경하려면 갱신에 $ 위치 연산자와 함께 $ 세트 연산자를 적용합니다.
$ 위치 운전자는 최종 업데이트 문이 같아야합니다, 명시 적으로 배열의 요소의 위치를 지정하지 않고 갱신에 배열의 올바른 요소를 식별합니다 :
db.collection.update( { "friends.u.username": "michael" }, { "$set": { "friends.$.u.name": "hello" } } )
-
==============================
2.당신은 $ 집합 연산자를 사용할 수 있습니다.
당신은 $ 집합 연산자를 사용할 수 있습니다.
> db.test.update({"friends.u._id":"eGqDjAjjtYADbuSnn"},{$set:{"friends.$.u.name":"hello"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
-
==============================
3.아래의 테스트로 잘 작동합니다
아래의 테스트로 잘 작동합니다
먼저 어레이의 현재의 값을 확인한다.
db.test.findOne({"friends.u.id" : "eGqDjAjjtYADbuSnn"},{"friends.u.name":1})
지금 업데이트 명령을 발사
db.test.update({"friends.u.id" : "eGqDjAjjtYADbuSnn"},{$set:{"friends.$.u.name":"hello"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
이제 업데이트 값의 유효성을 검사 결과를 다시 확인
db.test.findOne({"friends.u.id" : "eGqDjAjjtYADbuSnn"},{"friends.u.name":1})
희망이 도움이됩니다.
from https://stackoverflow.com/questions/34431435/mongodb-update-an-object-in-nested-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 각 문서의 추가 필드와 반응성 게시 구축 (0) | 2019.12.04 |
---|---|
[MONGODB] MongoDB를 : 여러 기준에 배열에서 찾기 값 (0) | 2019.12.04 |
[MONGODB] 별개의 기록 값을 가져옵니다 (0) | 2019.12.04 |
[MONGODB] 몽구스 고유의 객체 중첩 배열의 값 (0) | 2019.12.04 |
[MONGODB] MongoDB의에서 날짜를 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2019.12.04 |