Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Mongoose从集合中的所有文档中删除字段?_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

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

Javascript 如何使用Mongoose从集合中的所有文档中删除字段?,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我在MongoDB数据库中存储了一组文档,如下所示: [ { _id: 5fe72e02b237503088b8889b, code: '000001403', name: 'John', date: 2018-12-01T21:00:00.000Z, __v: 1 }, { _id: 5fe72e02b237503088b8889c, code: '000001404', name: 'Michael', da

我在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
  }
]
我需要从集合中的所有文档中删除“code”字段并保留文档,也就是说,我需要以下结果:

[
  {
    _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);
我不知道在这种情况下是否可以使用
聚合
$unset
方法,或者是否有其他方法


谢谢。

您可以实现如下所示的预期结果:

[
  {
    _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
  }
]
首先,您必须将“code”字段添加回模式,然后运行以下代码

之后,您可以再次从模式中删除代码字段

const res = await Item.updateMany({}, {$unset: {"code": 1}});

res.n; // Number of documents matched
res.nModified; // Number of documents modified


它不会在Consolery中两次显示0,再次将代码字段添加回架构,然后尝试取消设置它,看看它是否有效。在取消设置之前将字段重新添加回架构解决了同样的问题。谢谢@Abbas!不客气!我很高兴能帮上忙!快乐编码!