我必须在
students
集合中的某些文档中插入一个带有布尔值的新字段,其结构如下:
{
_id: ObjectId("61c9cffcf9b7043141272c5b"),
createdAt: 2021-12-27T14:38:52.025Z,
updatedAt: 2022-07-26T10:12:56.887Z,
deletedAt: null,
fullName: 'Karina Kuznetsova',
address: 'Chicago IL',
Major:'Computer Science',
__v: 0,
}
我在 MongoCompass 本地的 MongoSH 中运行以下查询:
db.students.aggregate([
{$match: {
"_id":ObjectId('61c9cffcf9b7043141272c5b')
}},
{
$set: { "transferred":true }
}
]);
我希望将字段添加到文档中,如下所示:
{
_id: ObjectId("61c9cffcf9b7043141272c5b"),
createdAt: 2021-12-27T14:38:52.025Z,
updatedAt: 2022-07-26T10:12:56.887Z,
deletedAt: null,
fullName: 'Karina Kuznetsova',
address: 'Chicago IL',
Major:'Computer Science',
__v: 0,
transferred: true
}
但是,原始文档保持不变,没有
transferred
字段。
选项2
我也试过这样:
const studentsList = db.students.find({
"_id": ObjectId('61c9cffcf9b7043141272c5b')
});
studentsList.forEach(student => {
const result = db.students.updateOne(
{ _id: student._id },
{
$set: { "transferred": true }
});
});
我做错了什么?
请使用
update
功能来更新文档。
aggregate
函数用于返回查询到的文档,但不会更新集合中现有的文档。
db.students.update(
{
_id: ObjectId('61c9cffcf9b7043141272c5b')
},
{
$set: { "transferred":true }
});