使用insert更新mongod中的数组值
我想做以下事情:
- finduserId如果存在其他创build一个
- finduserId,并将该项目推入数组,如果该项目已经存在不推动
架构
var ItemSchema = mongoose.Schema({ "userId" : { type:String }, "item" : [] });
我可以做, findOne
然后得到数组,然后find数组是否存在,否则推,然后保存它。
只是好奇,有没有build在mongoose
这样做?
解决您的问题:
ItemSchema.findOne({"userId":"yourId"},function(err,data){ if(data.length > 0){ console.log("USER EXISTS"); var newItemPush="newItem"; //For Task 2 //Add Item if Item Does not Exits ItemSchema.find({"userId":"yourId"},{ item: { $elemMatch: { item: newItemPush } } },function(err,data){ if(data.length > 0){ console.log("ADDING NEW ITEM"); ItemSchema.findOneAndUpdate({"userId":"yourId"},{ item: { $elemMatch: { item: newItemPush } } },function(err,data){ if(data){ console.log("NEW ITEM PUSHED SUCCESSFULLY"); } }); } }); } else { //Task 1 console.log("USER DOES NOT EXISTS NOW CREATE ONE"); var insertData={ userId:"newUserId", {$push: { item: "your item" } } } ItemSchema.update({},insertData,function(err,data){ if(data){ console.log("DATA INSERTED") } else{ console.log("DATA NOT INSERTED:"+err); } }) } });