Используя Express. js и MongoDB, как я могу добавить объекты в один и тот же массив? - PullRequest
0 голосов
/ 21 января 2020

У меня есть коллекция с продуктами. Коллекция структурирована следующим образом:

{
        "_id": "150",
        "name": "Milk",
        "description": "Skimmed",
        "price": "10",
},

Я хочу добавить новый объект в этот массив, называемый «рейтинги», который будет просто принимать «электронная почта» и «рейтинги»

Это будет выглядеть так:

   {
        "_id": "150",
        "name": "Milk",
        "description": "Skimmed",
        "price": "10",
        "ratings": [
                  { 
                    "email": "xyz@mail.com",
                    "rating": "5"
                  }
                  ]
}

Тем не менее, я хочу, чтобы «Молоко» имело больше оценок, чем один. Так что я могу l oop через рейтинги на входе и вывести среднее. По сути, каждый раз, когда пользователь оценивает «молоко», я хочу, чтобы его добавили в тот же массив? Я новичок в этом и, следовательно, не могу объяснить в конкретных c условиях. В основном:

{
            "_id": "150",
            "name": "Milk",
            "description": "Skimmed",
            "price": "10",
            "ratings": [
                      { 
                        "email": "xyz@mail.com",
                        "rating": "5"
                      },
                      { 
                       "email": "abc@mail.com",
                       "rating": "3"
                      },
                      { 
                       "email": "def@mail.com",
                       "rating": "1"
                      },
                      ]
}

Используя Express, я создал router.post, который выглядит следующим образом.

router.post('/', async (req, res) => { 
    const rate = await loadProducts();
try {
    rate.insertOne(

    {
    "ratings": 
    [{
        "email":req.body.email,
        "rating":req.body.rating
    }]
}); 
} catch (error) {
    console.log(error);
}

Это явно не способ сделать это, поскольку публикация через него создает новый массив в коллекции. Я хочу, чтобы он в основном нашел продукт, используя "_id", то, что я предоставлю, используя внешний интерфейс, и добавлю к нему 'оценки' "_id"

Крайне извиняюсь за мое объяснение новичка. Пытаюсь понять это.

Любая помощь будет высоко оценена.

1 Ответ

0 голосов
/ 21 января 2020

Вы можете проверить это обновление операторов для mongoDB

$push
$addToSet

https://docs.mongodb.com/manual/reference/operator/update-array/

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