我是一个完全的 MERN 新手!我需要使用 mongoose 清除 mongo 文档中数组的所有对象。我发现的大多数答案只是根据给定的条件删除数组的一部分,但我想清除整个数组,以便我可以从用户输入中重新填充它。
文件:
"_id": {
"$oid": "5e3ff34551c1a940d23251d1"
},
"inter": {
"significantEvents": []
},
"vigDataset": {
"vigMovt": [
{
"Time": 2,
"movt": 3
},
{
"Time": 4,
"movt": 5
},
{
"Time": 6,
"movt": 8
},
{
"Time": 8,
"movt": 8
},
{
"Time": 9,
"movt": 9
},
{
"Time": 5,
"movt": 5
},
{
"Time": 10,
"movt": 4
},
{
"Time": 5,
"movt": 6
},
{
"Time": 9,
"movt": 6
},
{
"Time": 12,
"movt": 3
}
]
这是我从 express 服务器尝试过但没有成功的方法:
parRouter.route('/cleargraph/:parId')
.put((req, res, next) => {
Par.findByIdAndUpdate(req.param.parId, {
$pull: {"vigDataset.vigMovt"}
})
.then((par) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(par);
}, (err) => next(err))
.catch((err) => next(err));
})
这是来自 React 端的:
handleClearGraph =(e)=> {
Axios.put(baseUrl + `par/cleargraph/${this.props.par._id}`)
.then(response => {
console.log( response)
})
最佳答案
如果您想提取数组的所有元素,那么您只需将该数组值设置为 []
:
parRouter.route('/cleargraph/:parId')
.put((req, res, next) => {
Par.findByIdAndUpdate(req.param.parId, {
$set: { "vigDataset.vigMovt": []}
// You can use {$unset : {'vigDataset.vigMovt': 1}} to remove field 'vigMovt' inside 'vigDataset'
})
.then((par) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(par);
}, (err) => next(err))
.catch((err) => next(err));
})
关于node.js - 如何使用 mongoose 删除 mongo 文档中嵌套数组的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60176163/