MongoDB $ push вложенных массивов - PullRequest
0 голосов
/ 26 ноября 2018

Я работаю над продовольственным блогом.Я хотел бы получить следующую структуру для рецептов еды в моей базе данных.

recipes : [
 {mainCategoryRecipe1: {...}},
 {mainCategoryRecipe2: {...}},
 subcategory1: [
   {recipe1: {...}}
 ]
]

Я публикую форму с полем выбора, указывающим правильную категорию и подкатегорию (если необходимо).Я могу получить к ним доступ в бэкэнде Node.js.

Я не могу понять, как вставить $ в базу данных, чтобы данные соответствовали правильной структуре.Я использую MongoJS.Вместо этого моя попытка разрешается с помощью этой структуры:

recipes : [
 {subcategory1 : recipe1[...]},
 {subcategory1 : recipe2[...]}
]

Вот мой код:

db.collection.findAndModify({
        query:{_id: mongojs.ObjectId(userId)},
        update: { $push: {
                recipes : {
                            [recipe.subcategory] : recipe
                          }
            }},
        new: true
    }, function(err, doc, lastErrorObject){
        if(err){
            throw (err)
        } else {
            //console.log(recipe)
            res.render('/success');
        }
    });

Заранее спасибо!

1 Ответ

0 голосов
/ 27 ноября 2018

Попробуйте с кодом любимый, если у вас есть какие-либо ошибки, пожалуйста, прокомментируйте их.

db.collection.findOneAndUpdate({
            {_id: new ObjectID(userId)},
            { $push: {
                    recipes : {
                                [recipe.subcategory] : recipe
                              }
                }},
            returnOriginal: false
        }, function(err, doc, lastErrorObject){
            if(err){
                throw (err)
            } else {
                //console.log(recipe)
                res.render('/success');
            }
        });
...