다음 한 작동하지 않습니다 몽구스 compund 고유 인덱스 나 인덱스
PaymentSchema.index({ driver_id: 1, year: 1, month: 1 },{ unique: true });
그래서 나는이 컬렉션은 필드
driver_id, year and month
의 각기 다른 조합에 대해 하나의 기록을 유지하고 싶다. 나는
upsert
옵션 모음을 업데이트 할 :
var query = {
driver_id: req.params.driver_id,
year: req.params.year,
month: req.params.month,
amount: req.params.old_value
};
var update = {
$set: {
amount: req.params.new_value
}
};
var options = {
upsert: true
};
Payment.update(query,update,options,function(err,rows){
if(err) return next(err);
res.json({});
});
그래서 내가 원하는 것은 주어진 고유 키 (driver_id + 년 + 월) 및 추가 조건 amount = ...
와와 문서를 업데이트하는 것입니다. 쿼리 조건이 양호하면 문서를 업데이트해야하며 작동합니다. 이 조건에 따라 문서가 발견되지 않고 고유 색인이있는 문서가 존재하지 않으면 해당 문서가 작성됩니다. 그러나 고유 색인이있는 문서가있는 경우 (금액 조건 만 올바르지 않은 경우) 동일한 고유 색인 (driver_id + year + month)으로 작성된 새 문서. 그 3 개의 필드 (driver_id + year + month)에 고유 인덱스를 선언했기 때문에 그것은 이상합니다. mongoshell에서 같은 필드가있는 두 개의 문서가 있다는 것을 알 수 있습니다 ...
'getIndexes'의 질문에 출력을 추가 할 수 있습니까? http://docs.mongodb.org/manual/reference/method/db.collection.getIndexes/ – WiredPrairie