Вставить элемент в массив в массиве записей mlab - PullRequest
0 голосов
/ 09 октября 2018

Запись в моей базе данных:

{
"_id": {
    "$oid": "5b93d84aa9123300043c4f8f"
},
"googleId": "110329027039267241635",
"username": "Carl Junior",
"eoUsers": [
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false
    },
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false
    },
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false
    },
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false,
        earnings: [['1/20', 0.2], ['1/21', 0.1],  // I want to insert item here
    },
     ]]
],
"__v": 0

Я хочу поместить элемент в базу данных в списке «Доходы», я решил использовать один из следующих вариантов: https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html

Хотя я не могу понять это. Как добавить элемент в список, который я обозначил?


ТАК после вставки элемента запись должна выглядеть следующим образом:

{
"_id": {
    "$oid": "5b93d84aa9123300043c4f8f"
},
"googleId": "110329027039267241635",
"username": "Carl Junior",
"eoUsers": [
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false
    },
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false
    },
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false
    },
    {
        "username": "1@gmail.com",
        "password": "3",
        "loggedIn": false,
         earnings: [['1/20', 0.2], ['1/21', 0.1],  ['I INSERTED', 0.45]]
    },
],
"__v": 0

1 Ответ

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

Сначала подключитесь к вашей базе данных

const mongoose = require('mongoose'); 
mongoose.connect( SPECIAL_KEY , { useNewUrlParser: true });

Затем найдите запись в вашей коллекции, используя userSchema, я полагаю, вы уже создали.

const User = mongoose.model('user', userSchema);  // where 'user' is the name of your collection

Найдите запись, например, с помощью._id, который содержит переменную, которую вы хотите обновить

userSchema.findOne({_id: '5b93d84aa9d1a300043c4f8f'})
        .then(OldUserRecord => {
                //Create a new user record, which will be used to overwrite the old
            const newUserRecord_eoUsers = OldUserRecord.eoUsers;
            newUserRecord_eoUsers[3].earnings_log.push( ['value', 0.45] );

                //Update the old user record
            userSchema.update({_id: '5b93d84aa9d1a300043c4f8f'}, {"eoUsers": newUserRecord_eoUsers});
}
...