Mongodb在数组中插入一个不存在的项



我想在mongodb集合中插入一个项目,如果项目不存在于数组中。

e。g系列:

{
empId :100,
empName: 'John',
empTechnicalSkills: [ { empid: 100, id:1 , value: 'mongodb' } , { empid: 100, id: 2 ,value:'.net'} ]
}

我想更新/推送新的技能,如果技能不存在,empid存在

如果我按下{ empid: 100, id:3 , value: 'sql server' },它应该在数组中添加一个新项

如果我按下{ empid: 100, id:1 , value: 'sql server' },它应该忽略id=1已经存在

如果我按下{ empid: 101, id:1 , value: 'sql server' },它应该创建一个新的文档,并添加一个技能(如upsert)

{
empId :101,
empTechnicalSkills: [ { empid: 101, id:1 , value: 'sql server' }  ]
}

有人可以帮助我了解如何实现这一点。我正在使用c#。

我尝试了不同的东西聚合管道与更新,通过匹配{empId and empTechnicalSkills.id $ne provided id}推送项目,但没有工作。

为什么不在插入之前执行匹配或查找呢?对于要插入的项,尝试先查找包含empId的文档。然后,您可以进行第二次查询,看看项目是否存在于empTechnicalSkills中,或者您可以检查您的代码,如果它存在。你想在哪里工作由你决定。然后,如果它不存在,运行mongo更新与push将其添加到数组。

最新更新