[MONGODB] 어떻게하여 MongoDB에서 필드를 증가 하는가?
MONGODB어떻게하여 MongoDB에서 필드를 증가 하는가?
나는 다음과 같은 몽고 DB 문서 구조를 가지고 :
{
_id: channelId,
title: channelTitle,
pubDate: channelPubdate,
items:
[
{
title: newsTitle,
desc: newsDescription,
link: newsLink,
pubDate: Date,
clicks: 0
},
{/*One more*/},
{/*...*/}
]
}
나는 (배열에 포함 된 문서의 필드를 업데이트하는) 컬렉션의 "클릭"필드를 증가 문제가 있습니다.
나는 이벤트 핸들러 (클라이언트)이 시도 :
News.update({ _id : Session.get("channelId"), "items.link" : this.link },
{ $inc: { "items.clicks": 1 } }
);
그러나 오류를 제공합니다 : catch되지 않은 오류 : 허용되지 않음. 신뢰할 수없는 코드는 ID로 문서를 업데이트 할 수 있습니다. [403]
나는 다음 서버 방법을 통해 시도 :
Meteor.methods({
incClicks: function(id, news)
{
News.update({ _id : id, "items.link" : news.link },
{ $inc : { "items.clicks": 1 } }
);
}
});
또 다른 예외 : 예외 호출 방법 'incClicks'MongoError 동안 : APPEND 수없는 문자열 필드 명을 사용하여 배열 클릭 수
이 작업에 대한 올바른 몽고의 요구는 무엇일까요?
해결법
-
==============================
1.오류가 나타난 바와 같이, 클라이언트에서 당신은 단지 간단한 _id 선택하여 업데이트를 수행 할 수 있습니다. 난 당신의 코드를 약간 수정과 방법을 사용하는 것이 좋습니다 것입니다 :
오류가 나타난 바와 같이, 클라이언트에서 당신은 단지 간단한 _id 선택하여 업데이트를 수행 할 수 있습니다. 난 당신의 코드를 약간 수정과 방법을 사용하는 것이 좋습니다 것입니다 :
Meteor.methods({ incClicks: function(id, news) { check(id, String); check(news, Match.ObjectIncluding({link: String})); News.update( {_id: id, 'items.link': news.link}, {$inc: {'items.$.clicks': 1}} ); } });
여기에서 우리는 특정 포함 된 문서를 업데이트하려면 $ 연산자를 사용하고 있습니다. 자세한 내용은 문서를 참조하십시오.
from https://stackoverflow.com/questions/27707365/how-to-increment-a-field-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 GET _id 찾기 쿼리 문자열로 (0) | 2019.12.20 |
---|---|
[MONGODB] 날짜 별 자바 / MongoDB의 쿼리 (0) | 2019.12.20 |
[MONGODB] 나는 MongoDB를 사용하여 이미지를 저장하기 위해 어떤 데이터 유형을 사용해야합니까? (0) | 2019.12.20 |
[MONGODB] MongoDB를 집계 쿼리는 $ 합계를 사용하여 적절한 금액을 반환하지 않습니다 (0) | 2019.12.20 |
[MONGODB] 시간에 의해 MongoDB의 그룹 (0) | 2019.12.20 |