提问者:小点点

如何使用Mongoose从集合中的所有文档中删除一个字段?


我有一个存储在MongoDB数据库中的文档集合,如下所示:

[
  {
    _id: 5fe72e02b237503088b8889b,
    code: '000001403',
    name: 'John',
    date: 2018-12-01T21:00:00.000Z,
    __v: 1
  },
  {
    _id: 5fe72e02b237503088b8889c,
    code: '000001404',
    name: 'Michael',
    date: 2018-12-01T21:00:00.000Z,
    __v: 1
  }
]

我需要从集合中的所有文档中移除“代码”字段,并保留文档,即需要如下结果:

[
  {
    _id: 5fe72e02b237503088b8889b,
    name: 'John',
    date: 2018-12-01T21:00:00.000Z,
    __v: 1
  },
  {
    _id: 5fe72e02b237503088b8889c,
    name: 'Michael',
    date: 2018-12-01T21:00:00.000Z,
    __v: 1
  }
]

我还从模型中删除了字段:

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const ItemSchema = new Schema({
  // code: String,
  name: String,
  date: {
    type: Date,
    default: Date.now
  },
});

module.exports = mongoose.model('Item', ItemSchema);

我不知道在这种情况下是否可以使用方法,或者是否有其他方法?

谢了。


共1个答案

匿名用户

我试过这样做,但不幸的是于事无补。集合中没有任何变化,尽管其他更新操作可以工作。

app.get('/fourth', async (req,res) => {
  try {
    const items = await Item.find();
    for (let x = 0; x < 10; x++) {
      items[x].code = null;
      delete items[x].code;
      console.log(x + '\n');
      await items[x].save();    
    }
    console.log('parsed');
    res.json('parsed');  
  } catch (err) {
    res.json({ message: err });    
  }
});

这是对第一条评论的回答。