猫鼬岗位没有重复

时间:2018-10-12 08:25:24

标签: mongodb mongoose mongodb-query mongoose-schema strict

我正在尝试查看一个不允许在数据库中包含多个实例的帖子/创建内容(因此不能重复)。我用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'时有效。由于{strict:true}上的updateOne政策。当我使用帖子时,我会得到同一对象的多个实例。

所以希望有人可以帮助我。 (如果有人对这个问题有更好的标题,请在下面进行评论)。我不知道如何用一句话来描述我的问题。

(请记住,实际上我有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 !');
    }

1 个答案:

答案 0 :(得分:1)

请尝试在strict:false查询中使用update。它们可能有助于解决您的问题。

var data = { fieldOne: 'Test2', fieldTwo: 'Test3' };
var opts = {
  upsert: true,
  runValidators: false,
  strict: false
};
Model.update({}, data, opts)
  .then((success) => {
    //success
  }).catch(() => { 
    //error 
  })