node.js - 如何使用 mongoose 删除 mongo 文档中嵌套数组的所有元素?

标签 node.js mongodb express mongoose mongodb-query

我是一个完全的 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/

相关文章:

node.js - 使用数据填充 TingoDB 以进行验收测试

node.js - 我的 Node.js Express 代码中出现语法错误

node.js - Jade多个模板文件

node.js - 从进程 uncaughtException 访问 res/req

node.js - Amazon SES 与 Node 邮件程序

node.js - 尝试在express中编写用户登录身份验证代码,无法在 Node 中使用express-session登录

windows - 空头引用在 NodeGit 中返回

node.js - Heroku process.env 未定义

javascript - 通过 Mongoose (MongoDB) 中的嵌入引用数组查找文档

node.js - Mongoose /keystonejs : unique field except if field is empty