【发布时间】:2021-12-02 18:39:07
【问题描述】:
以我的文档为例:
[{
_id: ObjectId("609391f436e519039a634311"),
name: "Class A",
numOfStudents: 10,
students: [{
name: "Student A",
age: 10,
}, {
name: "Student B",
age: 10,
}]
}]
我想更新班级的一些值并删除班级所有学生的一些信息。所以我在 updateOne 中使用了 $set 和 $unset,如下所示:
db.class.updateOne({
_id: ObjectId("609391f436e519039a634311")
}, {
$set: { something: "Something for describe" },
$unset: { "students.$[].age": "" }
})
但是现在,我想通过另一个字段的值将值设置为某个值,我必须将上面的脚本转换为如下所示的管道:
db.class.updateOne({
_id: ObjectId("609391f436e519039a634311")
}, [
{
$set: { something: "$name" },
}, {
$unset: [
"students.$[].age"
]
}
])
但它不起作用,它抛出了一个错误:
Invalid $unset :: caused by :: FieldPath field names may not start with '$'. Consider using $getField or $setField.
请给我一个建议。
【问题讨论】:
标签: mongodb mongoose aggregate