Kit*_*ten 4 javascript mongoose mongodb node.js express
我有一个存储在 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
}
]
Run Code Online (Sandbox Code Playgroud)
我需要从集合中的所有文档中删除“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
}
]
Run Code Online (Sandbox Code Playgroud)
我还从模型中删除了该字段:
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);
Run Code Online (Sandbox Code Playgroud)
我不知道在这种情况下是否可以使用aggregation该$unset方法,或者还有其他方法吗?
谢谢。
您可以像这样实现所需的结果:
首先,您必须将“代码”字段添加回您的架构中,然后运行以下代码。
之后,您可以再次从架构中删除代码字段。
const res = await Item.updateMany({}, {$unset: {"code": 1}});
res.n; // Number of documents matched
res.nModified; // Number of documents modified
Run Code Online (Sandbox Code Playgroud)
或者
Item.updateMany({}, {$unset: {"code": 1}}).then(res => {
console.log(res.n); // Number of documents matched
console.log(res.nModified); // // Number of documents modified
}).catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3805 次 |
| 最近记录: |