Javascript 如何使用Mongoose从集合中的所有文档中删除字段?
我在MongoDB数据库中存储了一组文档,如下所示: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
[
{
_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!不客气!我很高兴能帮上忙!快乐编码!