我需要从MongoDB中的不同对象中删除多个元素,但我的查询返回以下错误:"无法将pull应用于非数组值"。这是我的问题:
db.getCollection('mediaelements').update(
{ customer: ObjectId("...") },
{ $pull: { competitions: { $in: [ '24', '362', '361' ] } } },
{ multi: true }
)
元素结构的一个例子:
{
"_id" : ObjectId("..."),
"opts" : {
"data" : {
"playerSide" : "both",
"playerIconPlayer" : "p92985"
},
"type" : "playerIcon"
},
"language" : null,
"network" : "any",
"customer" : ObjectId("..."),
"file" : "image.png",
"type" : "image",
"__v" : 0,
"ranking" : 1,
"competitions" : [
"24",
"58",
"354",
"361"
],
"medias" : []
}
在这里,我想删除比赛" 24"和" 361"。
感谢您的帮助
Ps:没有{multi:true}似乎没有效果: "在1ms内更新了1条现有记录" 使用{multi:true}: "不能将$ pull应用于非数组值" 随着$ pullAll: " $ pullAll需要一个数组参数,但是给了一个对象"
也许有一些比赛'哪些不是阵列?我怎么能只将它应用于数组呢?或欢迎任何其他解决方案。
答案 0 :(得分:0)
全部放在一起:
db.getCollection('mediaelements').updateMany(
{ customer: ObjectId("...") },
{ "competitions.0": { "$exists": true } },
{ $pullAll: { "competitions": [ '24', '362', '361' ] } }
)