2017-11-16 5 views
0

나는 다음과 같은 스키마가 내부 값을 증가 : 문서의몽구스 - 배열

var mySchema = new Schema({ 
    "name": String, 
    "users": [ 
    { 
     "user_id": ObjectId, 
     "counter": Number 
    }] 
}); 

예 :

{ 
    "name": "Test", 
    "users": [ 
     { 
      "user_id": "aaaaaa", 
      "counter": 2 
     }, 
     { 
      "user_id": "bbbbbb", 
      "counter": 3 
     }] 
} 

을 어떻게 할 수 있습니까 findOneAndUpdate 특정 user_idcounter를 증가?

예 : Test을 찾고 counteruser_id: bbbbb으로 업데이트하려면 어떻게하나요?

+1

지금까지 해보신 것은 무엇입니까? –

+0

지금까지 나는 피하려고하는 2 개의 쿼리를하고 있습니다. "Test"로 문서를 찾는 것입니다. 그런 다음 배열을 살펴보고 특정 카운터를 업데이트합니다. 그리고 나서 저장 하나의 쿼리에서이 작업을 수행하는 방법을 모르겠습니다. –

답변

2
mongoose.model('MySchema', mySchema); //is this line superflous?? 
var MySchema = mongoose.model('MySchema'); 

MySchema.update({"name": "Test", "users.user_id" : "aaaaaa" } , 
       {$inc : {"users.$.counter" : 1} }, 
       function() {...}); 

따라서 첫 번째 개체를 사용하여 업데이트 할 개체를 찾고 있습니다. 두 번째 매개 변수는 업데이트 할 항목입니다. $는 쿼리에서 현재 선택된 개체 만 변경하는 데 사용됩니다. 마지막 매개 변수는 콜백입니다.