Mongodb mongoose compund唯一索引不起作用
我有以下索引:Mongodb mongoose compund唯一索引不起作用,mongodb,mongoose,Mongodb,Mongoose,我有以下索引: PaymentSchema.index({ driver_id: 1, year: 1, month: 1 },{ unique: true }); 因此,我希望此集合仅为每个不同的字段组合保存一条记录driver\u id,year和month。我想使用upsert选项更新集合: var query = { driver_id: req.params.driver_id, year: req.params.year, m
PaymentSchema.index({ driver_id: 1, year: 1, month: 1 },{ unique: true });
因此,我希望此集合仅为每个不同的字段组合保存一条记录driver\u id,year和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({});
});
所以我想用给定的唯一键(驱动程序id+年+月)和附加条件
amount=…
更新文档。若查询条件是确定的,那个么应该更新文档—并且它可以工作。如果未根据此条件找到文档,并且具有唯一索引的文档不存在,则会创建该文档。但如果存在具有唯一索引的文档(只有金额条件不正确),则将在中创建具有相同唯一索引(驱动程序id+年+月)的新文档。这很奇怪,因为我在这3个字段(driver_id+year+month)上声明了唯一索引,并且我可以在mongoshell中看到存在两个具有相同字段的文档 已解决:我必须重新启动mongod
并删除数据库(可能reindex选项也会起作用)。您能否将getindex
的问题输出添加到您的问题中: