Я хочу удалить свойство внутри объекта в mongodb - PullRequest
0 голосов
/ 05 октября 2018

У меня есть этот документ bson в коллекции.Я хочу удалить ключ на основе динамического значения.

{
  "_id": ObjectId("53ccff9bbb25567911f208a2"),
  "image": {
    "image1": "5213423424234.jpg",
    "image2": "5213423424235.jpg",
    "image3": "5213423424236.jpg"
  }
}

В запросе я получу "image1"

temp/5bb3685b663c6f001d14c5da/dl/image1

Я сохранил ключ в переменной

let keyid = req.params.k_id

Если я вызываю ключ напрямую, этоработает.

  let qry = {
    _id: mongojs.ObjectId(req.params.p_id)
  }
  let update = {
    $unset: {
      "image.image1": ""
    }
  }

  db.inventory.findAndModify({
      query: qry,
      update: update,
      safe: true
    }, function (err, doc) {
        if (err) {
          res.status(500).json({
            "success": false,
            "error": err
          })
          return
        }

        res.status(200).json({
          "success": true,
          "message": "Deleted image key"
        })
        return
    })

Но так как ключ является динамическим, я не могу найти решение с различными возможностями

// Try1
    $unset: {
      'image.' + keyid: ""
    },
// Try2
    $unset: {
      `image.${keyid}`: ""
    }

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вам необходимо программно создать объект $ unset:

На этот вопрос ответили здесь: с помощью переменной в обновлении mongodb

0 голосов
/ 05 октября 2018

Вы можете попробовать изменить объект обновления следующим образом:

let update = {}
update["$unset"] = {};
update["$unset"]['image.' + keyid] = '';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...