Найти и обновить объект в массив в массив в Мангусте - PullRequest
0 голосов
/ 03 июля 2018

Допустим, у меня есть этот JSON в Mongodb:

 {
"_id": {
    "$oid": "5b37f4b5fe0cd65b1739641b"
},
"email": "sample@me.com",
"username": "Sample",
"password": "$2b$10$Zpynx8wTgqQftUO3m1tLUO8lNHtBtxl0i7yk84rRkVzcTmB9zO7Mu",
"__v": 0,
"tds": [
    {
        "_id": {
            "$oid": "5b3bebb247737b77b2ecc398"
        },
        "category": "Projects",
        "todos": {
            "_id": {
                "$oid": "5b3bebb247737b77b2ecc397"
            },
            "todo": "something to do"
        }
    },
    {
        "_id": {
            "$oid": "5b3bec41dc270277bae759d6"
        },
        "category": "Main",
        "todos": {
            "_id": {
                "$oid": "5b3bec41dc270277bae759d5"
            },
            "todo": "Other to do"
        }
    }
]

}

Как я могу обновить задачу? e.g.:

  {
        "_id": {
            "$oid": "5b3bebb247737b77b2ecc397"
        },
        "todo": "something to do"
    }

в

  {
        "_id": {
            "$oid": "5b3bebb247737b77b2ecc397"
        },
        "todo": "Lets do something"
    }

Я пытался в nodeJS использовать select, $ push, $ set, но любой был способен сделать это. Может быть, есть фильтр, который я не знаю. Поскольку я собираюсь в это в течение 2 дней, я решил сдаться.

Схема:

var UserSchema = new mongoose.Schema({
  email: {
    type: String,
    unique: true,
    required: true,
    trim: true
  },
  username: {
    type: String,
    unique: true,
    required: true,
    trim: true
  },
  password: {
    type: String,
    required: true,
  },
  passwordConf: {
    type: String,
    required: true,
  },
  tds:{}
})

;

EDIT:

Новый действительный json с действительными идентификаторами.

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете обновить данные json с помощью функций updateOne () и updateMany () в mongoose, как показано ниже:

const Users=mongoose.model('user',UserSchema);
Users.updateOne({'tds.todos._id':'5b3bebb247737b77b2ecc397','tds.todos.todo':'something 
to do'},{'tds.todos.todo':'Lets do something'}).then((users)=>{
console.log(users);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...