Как удалить указанный вложенный документ c из поля массива в MongoDB? - PullRequest
0 голосов
/ 05 апреля 2020

хорошо, я работал над проектом и хочу удалить элемент из массива в mongodb. вот мой код

    return new Promise(async(resolve, reject) => {
    await categoryCollection.findOne({_id : ObjectID(this.category_id)}, async (err, cat) => {
        let x = this.cat_slug
        if(!err) {
            cat.sub_categories.forEach(function(s_cat) {
                if (s_cat.slug == x) {
                    // here i need to delete the array
                }
            })
        } else {
            reject(err)
        }
    })
})

}

и моя коллекция mongodb в качестве примера

{
"_id" : ObjectId("5e89db06a4c8d06b8b8784ae"),
"author" : ObjectId("5e89db06a4c8d06b8b8784ad"),
"name" : "Design",
"slug" : "design",
"sub_categories" : [ 
    {
        "author" : ObjectId("5e89e3914ebca9658b4bdae4"),
        "name" : "Games",
        "slug" : "games",
        "created_at" : "2020-4-5-6:55:38",
        "updated_at" : "2020-4-5-6:55:38"
    }, 
    {
        "author" : ObjectId("5e89e39c4ebca9658b4bdae5"),
        "name" : "Photoshop",
        "slug" : "photoshop",
        "created_at" : "2020-4-5-6:55:38",
        "updated_at" : "2020-4-5-6:55:38"
    }
],
"created_at" : "2020-4-5-5:56:55",
"updated_at" : "2020-4-5-5:56:55"

}

я хочу удалить один элемент в Массив sub_categories, и этот элемент собирается выбрать его из моего механизма шаблонов (кнопка). Когда я нажимаю кнопку удаления, я должен удалить указанный элемент c, такой как элемент sub_categories [0], который я хочу удалить.

1 Ответ

0 голосов
/ 05 апреля 2020

Это может помочь вам.

categoryCollection.update(
  { _id : ObjectID(this.category_id) },
  { $pull: 
    { 'sub_categories': 
      { "author": ObjectId("5e89e3914ebca9658b4bdae4") }
    }
  } 
)

Это будет работать, только если «автор» уникален. Если не. Добавьте уникальный идентификатор для каждой «подкатегории».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...