如何更新猫鼬数组中的所有文档并创建它们(如果不存在)?

时间:2018-08-14 03:29:04

标签: node.js mongoose

我有一个要更新的文档ID数组,问题是如果它们不存在,我希望能够创建它们。

这是我的模式:

const CarRanking= new Schema({ 
id:{
 type: String,
 lowercase: true,
 unique: true,
 required: true
},
count:{
    type:Number,
    default:1
},

},
{
 timestamps: true
});

我的查询如下:

let arrIds = ['car1','car2','car3'];
TestRanking.updateMany({
id : { "$in": arrIds}
},{  
                    //<<======= This failed to create if they dont exists  
                    //          because i don't know how to put 
                    //          the corresponding id from the arrIds
 $inc : {count: 1}
},{safe: true, upsert: true, new : true})
.exec()
.then((data)=>{
  res.json({data});
})
.catch(err=>{
  console.log(err);
  next(err)})
}

当它们不存在时,我该如何完成创作

1 个答案:

答案 0 :(得分:0)

此upsert标志将仅在mongodb中创建一个文档,为此,您需要将bulkwriteupdateone一起使用。

例如:

class Entity1 {
    @OneToOne(mappedBy = "entity1")
    private Entity2 entity2;
}

class Entity2 {
    @JoinColumn(name = "DB_FIELD_NAME", referencedColumnName = "ENTITY_1_PK")
    @OneToOne(optional = true)
    private Entity1 entity1;
}