我想做以下事项: -
模式
var ItemSchema = mongoose.Schema({
"userId" : {
type:String
},
"item" : []
});
我可以,findOne
然后获取数组,然后找到数组是否存在,否则按下然后保存它。
很奇怪有没有内置mongoose
这样做?
答案 0 :(得分:0)
解决您的问题:
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);
}
})
}
});