как я могу удалить все элементы вложенного массива в документе mon go, используя mon goose? - PullRequest
1 голос
/ 11 февраля 2020

Я полный новичок MERN ie пожалуйста! Мне нужно очистить все объекты массива в документе mon go, используя mon goose. Большинство ответов, которые я нашел, просто удалило бы часть массива на основе заданного условия, но я хочу очистить весь массив, чтобы я мог снова заполнить его из пользовательского ввода.

Документ:

 "_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));
})

, и это с конца Реакции:

  handleClearGraph =(e)=> {
  Axios.put(baseUrl + `par/cleargraph/${this.props.par._id}`)
  .then(response => {
    console.log( response)
})

1 Ответ

1 голос
/ 11 февраля 2020

Если вы хотите получить все элементы массива, вы можете просто установить значение этого массива на []:

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));
    })
...