1
我有类似如下MongoDB的子文档的比赛,其中elemMatch不反对
{
things: [ { thing: { type: String }, otherThing: { type: String } ]
}
一个模式的子文档让我们假设它的人口像这样
[
{ thing: 'Thing 1', otherThing: '123-001'},
{ thing: 'Thing 2', otherThing: '123-002'},
{ thing: 'Thing 3', otherThing: '123-003'},
{ thing: 'Thing 4', otherThing: '123-004'}
]
我想现在插入到这个东西5 ,但我想检查它是否存在,所以我这样做:
Things.findOneAndUpdate(
{
things: {
$elemMatch: {
thing: {
$ne: 'Thing 5'
}
}
}
},
{
$push: {
things : {
thing: 'Thing 5',
otherThing: '123-005'
}
}
})
当我第一次运行脚本时,Thi ng 5被插入。当我第二次运行它时,我预计它会失败,但会插入一个重复的“事情5”。
我怀疑这是因为$ elemMatch的东西$ ne匹配的事情1 - 4,因此将推。我需要做什么,它基本上说“如果事情5不在这些子文档中”?
为什么不直接使用'{“things.thing “:{$ ne:”thing5“}}'? – Veeram
按蒙戈文档应该是这样的事情:{ 事情:{$ elemMatch:{$ NE: '事5' }} } –