【发布时间】:2021-08-10 04:39:09
【问题描述】:
我有一个包含元数据的对象数组,看起来与此类似。
数据:
metadata:[
{ matchid: '1', region: 'europe' },
{ matchid: '2', region: 'africa' },
{ matchid: '3', region: 'asia' },
]
我有一个端点设置来接收一组 IDS ['1', '2'],这将删除所有包含这些 IDS 的对象。
这是我当前的查询:
查询删除对象
xx.findByIdAndUpdate(
id,
$pullAll: {
"metadata.matchid": {
$in: req.body.matches
}
}
)
我希望删除 id 为 1 和 2 的两个对象
预期结果:
metadata:[
{ matchid: '3', region: 'asia' },
]
我收到一个我以前从未见过的错误,它是一个显示 codeName: "BadValue" 的对象
【问题讨论】:
-
$pullAll仅删除数组中与您给出的指定值完全匹配的元素,包括顺序。它以空操作数表达式( { } )开头。所以,也许像这样查询:xx.findByIdAndUpdate(id, { $pullAll: { "metadata.matchid": [{ $in: req.body.matches }], }, });.