2016-09-18 2 views
0

메시지에 특정 ID가 있고 사용자 ID가받는 사람 배열에있는 하위 문서의 값을 업데이트하려고합니다. 일치하는 개체의 값을 지정된 사용자 ID로 업데이트하려고합니다. 나는 MongoDB를 CLI에서 다음 쿼리를 실행하면FeathersJS Mongoose : 일치하는 하위 문서 업데이트 중 작동하지 않습니다.

, 모든 작업 및 값이 업데이트됩니다 :

messageService.update({ 
    _id : '57d7edb8c497a75a6a7fde60', 
    "recipients.userId" : "5789127ae2bcc79326462dbc" 
},{ 
    $set: {"recipients.$.read": true} 
}).then(function(e) { 
    console.log(e) 
}).catch(function(e) { 
    console.log(e); 
}); 
:

db.getCollection('messages').update({ 
    _id : ObjectId("57d7edb8c497a75a6a7fde60"), 
    "recipients.userId" : "5789127ae2bcc79326462dbc" 
},{ 
    $set : {"recipients.$.read": true} 
}); 

을하지만 내 FeathersJS 응용 프로그램에서 JS를 통해 다음과 같은 쿼리를 실행할 때

오류가 발생합니다.

GeneralError: The positional operator did not find the match needed from the query. Unexpanded update: recipients.$.read

무엇이 잘못 되었나요?

한번에 많은 메시지를 업데이트하는 더 좋은 방법이 있습니까?

감사! 당신이 nullid을 설정하고 params.query에 쿼리를 바꾸어 service method를 호출 할 필요가 쿼리에 의해 하나를 업데이트하거나 여러 레코드를 들어

답변

1

:

messageService.update(null, { 
    $set: {"recipients.$.read": true} 
}, { 
    query: { 
    _id : '57d7edb8c497a75a6a7fde60', 
    "recipients.userId" : "5789127ae2bcc79326462dbc" 
    } 
}).then(function(e) { 
    console.log(e) 
}).catch(function(e) { 
    console.log(e); 
}); 
+0

나를 위해 감각을 만들지 만, 내가 얻을이 코드를 실행하면 "Error : [object Object]"응답 – tan

+1

https://docs.feathersjs.com/debugging/readme.html이 더 나은 오류 메시지를 얻는 데 도움이 될 수 있습니다 (오류를 올바르게 변환하지 못하는 버그 일 수 있음). – Daff

+0

업데이트 대신 패치를 사용해야합니다. 감사! – tan