【发布时间】:2019-03-17 10:29:20
【问题描述】:
我正在尝试查看不允许数据库中有多个实例的发布/创建(因此没有重复)。我查看了updateOne 和{upsert:true},这对我不起作用,因为只有当你有一组特定的数据时才有效。
示例数据:
cat:{
name: "jim",
age: 8
}
示例模型:
cat:{
name: String
}
我的代码:
object.updateOne(req.body,req.body,{upsert:true},function(err,object){
if(err) console.log(err);
res.json(object);
})
}else{
res.json('error: type: '+ req.params.type + 'not found !');
}
但这只有在我将'age' 添加到我的模型时才有效。由于updateOne 上的{strict:true} 政策。当我使用帖子时,我会得到同一个对象的多个实例。
所以希望有人可以帮助我。 (如果有人知道这个问题的更好标题,请在下面评论)。我不知道如何用 1 句话描述我的问题。
(请记住,实际上我有一个包含 100 多个属性的数据集,并且只需要 60 个)。所以简单地添加年龄对我的数据集没有帮助。因为那时我的文档中有 40 个未使用的值。
编辑:
在查看下面作为答案发布的代码后,我注意到我在自己的代码中犯了一个错误。这就是代码的样子:
object.updateOne({},req.body,{upsert:true},function(err,object){
if(err) console.log(err);
res.json(object);
})
}else{
res.json('error: type: '+ req.params.type + 'not found !');
}
【问题讨论】:
标签: mongodb mongoose mongodb-query mongoose-schema strict