Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 无重复的猫鼬帖子_Mongodb_Mongoose_Mongodb Query_Mongoose Schema_Strict - Fatal编程技术网

Mongodb 无重复的猫鼬帖子

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

我正在尝试查看一个post/create,它不允许数据库中有多个实例(因此不允许重复)。我用
{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个)再次查看后,谢谢。我注意到我自己的代码中有错误。我不小心把尸体放了两次。因此,查询将搜索不在模型中的属性。愚蠢的我>_