gpt4 book ai didi

mongodb - 没有重复的 Mongoose 帖子

转载 作者:可可西里 更新时间:2023-11-01 10:38:03 26 4
gpt4 key购买 nike

我正在尝试查看不允许数据库中有多个实例(因此没有重复项)的发布/创建。我查看了带有 {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} 政策。当我使用一个帖子时,我得到了同一个对象的多个实例。

所以希望有人能帮助我。 (如果有人知道这个问题的更好标题,请在下面评论)。我不知道如何用 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 !');
}

最佳答案

请尝试在 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
})

关于mongodb - 没有重复的 Mongoose 帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52775324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com