如何在 MongoSH 中的现有 MongoDB 文档中插入字段

问题描述 投票:0回答:1

我必须在

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 }
        });
});

我做错了什么?

mongodb mongodb-query aggregation-framework
1个回答
0
投票

请使用

update
功能来更新文档。

aggregate
函数用于返回查询到的文档,但不会更新集合中现有的文档。

db.students.update(
    {
        _id: ObjectId('61c9cffcf9b7043141272c5b')
    },
    {
        $set: { "transferred":true }
    });
© www.soinside.com 2019 - 2024. All rights reserved.