Mongodb 无重复的猫鼬帖子
我正在尝试查看一个post/create,它不允许数据库中有多个实例(因此不允许重复)。我用Mongodb 无重复的猫鼬帖子,mongodb,mongoose,mongodb-query,mongoose-schema,strict,Mongodb,Mongoose,Mongodb Query,Mongoose Schema,Strict,我正在尝试查看一个post/create,它不允许数据库中有多个实例(因此不允许重复)。我用{upsert:true}查看了updateOne,但这对我来说不起作用,因为只有当您有一组特定的数据时才起作用 示例数据: cat:{ name: "jim", age: 8 } 示例模型: cat:{ name: String } 我的代码是: object.updateOne(req.body,req.body,{upsert:true},function(err,obj
{upsert:true}
查看了updateOne
,但这对我来说不起作用,因为只有当您有一组特定的数据时才起作用
示例数据:
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}
策略。当我使用post时,我会得到同一对象的多个实例
希望有人能帮我。(如果有人知道这个问题的更好的标题,请在下面进行评论)。我不知道如何用一句话来描述我的问题
(请记住,实际上我有一个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 !');
}
请尝试在
update
查询中使用strict:false
。它们可能有助于解决你的问题
var data = { fieldOne: 'Test2', fieldTwo: 'Test3' };
var opts = {
upsert: true,
runValidators: false,
strict: false
};
Model.update({}, data, opts)
.then((success) => {
//success
}).catch(() => {
//error
})
这对我不起作用。因为现在年龄也增加了。那么,你需要什么呢?age get discard?在正常的post请求中,您可以使用该模型作为所需属性的过滤器。我只能使用没有任何副本的系统。因此,在本例中,我只希望名称位于数据库中。(事实上,我需要一个对象的100个属性中的60个)再次查看后,谢谢。我注意到我自己的代码中有错误。我不小心把尸体放了两次。因此,查询将搜索不在模型中的属性。愚蠢的我>_