은 내가 MongoDB의 컬렉션에서 다음과 같은 데이터가 users
라는 이름이 있습니다
{
"_id" : ObjectID("5a3903562cdc59fad5fdc098"),
"name" : "Ana",
"hobbies" : [
{
"title" : "kissing",
"with" : "pets"
},
{
"title" : "playing",
"with" : "pets"
},
{
"title" : "sleeping",
"with" : "pets"
}
]
}
{
"_id" : ObjectID("5a3903a32cdc59fad5fdc099"),
"name" : "Bart",
"hobbies" : [
{
"title" : "hitting",
"with" : "pets"
},
{
"title" : "beating",
"with" : "pets"
},
{
"title" : "eating",
"with" : "pets"
}
]
}
내가 레고 같은 새 값으로 애완 동물에게 모든 with
키 값을 교체해야합니다. 다음
하여 MongoDB의 documentation 버전 3.6 상태 다음 with
키의 각으로
The $[] operator can be used for queries which traverse more than one array and nested arrays.
내가해야 할 일을 수행한다 $[]
를 사용하여, 두 개의 분리 된 배열의 내부에 살고있다. 그리고 맥에서 완벽하게 작동하지만 Windows 시스템에서,이 오류가 얻을 :
cannot use the part (hobbies of hobbies.$[].with) to traverse the element
두 시스템은 MongoDB의 쉘 버전 3.6.0을 실행합니다. Mac 용 운영 체제는 macOS Sierra 10.12.6이고 Windows 용 Windows 10은 Windows 10입니다.
SO는 위치 연산자와 내가 특별히 얻는 오류와 관련된 많은 질문을 가지고 있습니다. 그러나 동일한 컬렉션에서 실행 된 동일한 작업이 Windows에서는 실패하지만 Mac에서는 성공한 이유가 없습니다.
필요한 결과를 얻으려는 다음 두 명령을 시도했습니다. 둘 다 Mac에서 작동하며 위의 동일한 오류로 Windows에서 모두 실패합니다.
db.users.updateMany({}, {$set: {"hobbies.$[].with": "legos"}});
및
db.users.update({}, {$set: {"hobbies.$[].with": "legos"}}, {multi: true});
당신은 차이 here의 화면 녹화를 볼 수 있습니다. Windows 컴퓨터에서의 녹음 텍스트가 더 작은쪽에 있다는 것을 미리 사과드립니다.
Windows에서이 문제를 해결하는 방법에 대한 도움이 있으면 대단히 감사하겠습니다.
두 운영 체제에서 db.version()을 실행할 수 있습니까? 그냥 서버 버전을 확인하는 것도 마찬가지입니다. – Veeram
@Veeram,'db.version()'은 두 머신에서 ** 3.6.0 **을 반환합니다. –
다른 시스템에서 연결 한 것과 동일한 데이터베이스인지 확인하십시오. 오류는 적어도 취미가 없거나 배열이 아닌 취미를 가진 문서가 적어도 하나 있다는 오류입니다. 'db.users.updateMany ({hobbies : {$ type : "array"}}, {$ set : { "hobbies. $ [].": "legos"}})를 시도해보십시오. " –