Найти и удалить элемент по ид находящийся во вложенной схеме Mongoose
Здравствуйте!!!
Подскажите как выбрать первый subtitle по ид и удалить его? Я пробовал много чего например: const fcat = await Category.findOne({_id: req.body.parentId}, {subcategories: {$elemMatch: { _id: req.body.id }}}); У меня выбирает: fcat ========> { _id: 5c35969723b5683be8f3b8b7, subcategories: [ { visible: true, description: 'Подкатегория 2', keywords: 'Подкатегория 2', sort: 0, _id: 5c3596b323b5683be8f3b8b9, name: 'Подкатегория 2', slug: 'podkategoriya-2', parent: 5c35969723b5683be8f3b8b7, categoryslug: 'kategoriya-2', created_at: 2019-01-09T06:37:39.647Z, updated_at: 2019-01-09T06:37:39.647Z } ] } Проблема в том что я никак не могу выбрать элемент из subcategories по ид и сделать чтото типа Category.findByIdAndRemove({ _id: req.body.id, }); { "_id" : ObjectId("5c335845de2c34490626655d"), "visible" : true, "sort" : 49, "name" : "title", "slug" : "title", "description" : "title", "keywords" : "title", "user" : ObjectId("5c33357434a7fb328f7f0d5d"), "subcategories" : [ { "visible" : true, "description" : "subtitle", "keywords" : "subtitle", "sort" : 10, "_id" : ObjectId("5c3358dede2c34490626655f"), "name" : "subtitle", "slug" : "o-subtitle", "parent" : ObjectId("5c335845de2c34490626655d"), "categoryslug" : "subtitle", "created_at" : ISODate("2019-01-07T13:49:18.563Z"), "updated_at" : ISODate("2019-01-07T13:49:18.563Z") }, { "visible" : true, "description" : "subtitle2", "keywords" : "subtitle2", "sort" : 1, "_id" : ObjectId("5c335924de2c344906266560"), "name" : "subtitle2", "slug" : "subtitle2", "parent" : ObjectId("5c335845de2c34490626655d"), "categoryslug" : "subtitle2", "created_at" : ISODate("2019-01-07T13:50:28.930Z"), "updated_at" : ISODate("2019-01-07T13:50:28.930Z") } ], "created_at" : ISODate("2019-01-07T13:46:45.382Z"), "updated_at" : ISODate("2019-01-07T13:50:28.930Z"), "__v" : 2 } |
https://docs.mongodb.com/manual/refe...r/update/pull/
там найти: The following operation updates all documents in the collection to remove "apples" and "oranges" from the array fruits and remove "carrots" from the array vegetables: |
Ну чтото это все както сложно для свиду простой схемы.
|
Category.findById(req.body.parentId, function(err, category) { category.subcategories.id(req.body.id).remove(); category.save(); }); |
Часовой пояс GMT +3, время: 05:59. |