MongoDB와 원자 '$ set'연산자를 사용하여 MongoDB 문서를 업데이트하는 방법을 생각해 내는데 어려움을 겪고 있습니다. 나는 그것이 Mongo의 기준/업데이트 언어 인 것으로 꽤 확신한다. 나는 Mongomatic이 아니라 문제가있다. 그러나 나는 틀린 것으로 기꺼이 증명된다.Mongo/Mongomatic에서 원자 적 업데이트를 수행하는 방법?
독립과 요점에 대한 링크, 실행 가능한 스크립트는 여기에 있습니다 : 나는이처럼 보이는 문서를 생성하여 시작하고 https://gist.github.com/3835672
:
{"videos":[{"video_id":"video1"},{"video_id":"video2"}],"_id":{"$oid": "506ddd53a114604ce3000001"}}
내가 사용하여 해당 문서를 얻을 수 있습니다 모델은 사용 Mongomatic 인스턴스화 :
를 : 나는이 일을함으로써, '전망'필드를 설정하기 위해 노력하고있어 다음video_group = VideoGroup.find_one('videos.video_id' => 'video1')
몽고는 다음과 같은 오류와 함께, 불면 어디
video_group.update!({ 'videos.video_id' => 'video1' }, '$set' => { 'videos.$.views' => 123 })
:
can't append to array using string field name [$]
나는이에 유래에 대한 매우 일반적인 질문 알고있다. 나는 일반적으로 문제는 위치 연산자가 일치하지 않는다는 것을 이해한다. 그러나 수십 개의 응답을 읽는 경우에도 여전히 작동하는 방식으로이 성명을 표현하는 방법을 알 수 없습니다.
방금 잘못된 데이터 구조로 시작 했습니까?
나는 Mongo와 Mongomatic 사이의 균열에 빠져있는 것을하려고하고있는 것처럼 보입니다. 나는 이것을 Mongo로 가서 다음과 같이 마침내 작동하게 만들었습니다 : VideoGroup.collection.update ( { 'videos.video_id'=> 'video1'}, { '$ set'=> {videos. $ .views '=> 123}} ) –