我正在尝试这个:
var query= {'boardUrl':data.url,'shapes':data.canvas};
Shape.findOneAndUpdate(query,query,{upsert:true},function(err,doc){
if (err){
console.log(err);
}
});
我想要的是检查我的Shapes集合中是否已存在具有相同boardUrl的文档并更新它。如果不存在,请使用boardUrl和shapes创建一个新文档。
My Shape集合如下:
var shapeSchema = mongoose.Schema({
boardUrl: String,
shapes: String
});
始终在创建新文档。你们可以看看我的查询有什么问题吗? 感谢
答案 0 :(得分:1)
如果我理解,你的情况还包括'shapes'
的平等,这是你不想要的。删除:您的情况应该只检查'boardUrl'
尝试:
var condition = {'boardUrl':data.url};
var doc = {'boardUrl':data.url,'shapes':data.canvas};
Shape.findOneAndUpdate(condition,doc,{upsert:true},function(err,doc){
if (err){
console.log(err);
}
});
这样,当找不到data.url
时,将插入新文档。找到后,shapes
将更新为data.canvas
。
希望这是你想要的
答案 1 :(得分:0)
一种方法是通过验证,你可以用findOrCreate方法,如果存在则查找数据,否则在数据库中输入新条目
Shape.findOrCreate({
where: shapeCondition
})
.spread(function (Shape, created) {
if (created == false) {
(write update query)
return callback(err);
} else {
return callback(null, data);
}
}).catch(function (err) {
err.exception = "error message";
return callback(err);
});