2016-06-03 3 views
2

비디오 진행을 위해 문서를 업데이트하려고합니다. isFinished 필드가 있는데, 사용자가 아직 동영상을 보지 않은 경우 값은 false입니다. 사용자가 시청을 마친 후에는 true로 업데이트해야합니다.현재 값이 거짓 인 경우에만 부울 속성을 업데이트하십시오.

업데이트 방법으로 전달할 isFinished을 결정하기 위해 비디오의 현재 길이와 비디오의 현재 시간 만 확인합니다. 사용자가 이미 동영상 시청을 끝내고 다시 시청하기로 결정하고 끝내지 않으면 문서에서 isFinished to false의 값을 업데이트해서는 안됩니다.

속성의 현재 값이 false 인 경우에만 어떻게 업데이트합니까?

MyCollection.upsert({ 
    userId: this.userId, 
    videoId: videoId 
}, { 
    $set: { 
     userId: this.userId, 
     videoId: videoId, 
     videoStartTime: videoStartTime, 
     isFinished: isFinished //only change this if current value is not false 
    } 
}); 
+0

문서를 선택할 때'isFinished' 필드 값을 고려해야합니다. – styvane

+0

@ user3100115하지만 'videoStartTime'과 같은 다른 속성을 업데이트하고'isFinished'를 건너 뛰려면 어떻게해야합니까? – dork

+0

그럴 수 없습니다. 단순히 불가능합니다. 먼저 'isFinished' 필드 값을 가져와 값에 따라'if/else' 문을 사용해야합니다. – styvane

답변

1

이 명령은 올바르게 작동합니다.

db.collectionname.update({isFinished:false},{$set:{isFinished:true}}) 
+1

하지만 'videoStartTime'과 같은 다른 속성을 업데이트하고'isFinished'를 건너 뛰려면 어떻게해야합니까? – dork

관련 문제