MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да изтрия вложен обект въз основа на неговия ObjectId?

Можете да използвате следния маршрут за ИЗТРИВАНЕ, за да изтриете ученик от сесия на курс.

router.delete(
  "/course/:courseId/session/:sessionId/student/:studentId",
  async (req, res) => {
    try {
      let result = await Course.updateOne(
        { _id: req.params.courseId, "sessions._id": req.params.sessionId },
        {
          $pull: { "sessions.$.students": { userName: req.params.studentId } }
        }
      );

      res.send(result);
    } catch (err) {
      console.log(err);
      res.status(500).send("Something went wrong");
    }
  }
);

Да приемем, че имате курс като този:

{
    "_id" : ObjectId("5de907acdfcef9493cd215a8"),
    "name" : "Course 1",
    "sessions" : [
        {
            "date" : ISODate("2019-12-05T16:32:41.998+03:00"),
            "_id" : ObjectId("5de907acdfcef9493cd215a9"),
            "students" : [
                {
                    "_id" : ObjectId("5de907acdfcef9493cd215ac"),
                    "userName" : ObjectId("5de8e4c8f74cf254d04f90d8"),
                    "status" : 1
                },
                {
                    "_id" : ObjectId("5de907acdfcef9493cd215ab"),
                    "userName" : ObjectId("5de8e4d5f74cf254d04f90d9"),
                    "status" : 1
                },
                {
                    "_id" : ObjectId("5de907acdfcef9493cd215aa"),
                    "userName" : ObjectId("5de8e4ddf74cf254d04f90da"),
                    "status" : 1
                }
            ]
        }
    ],
    "__v" : 0
}

Ако искаме да изтрием ученика с потребителско име със стойност 5de8e4ddf74cf254d04f90da , можем да изпратим заявка за ИЗТРИВАНЕ към нашия маршрут, като използваме url като този:

http://localhost/courses/5de907acdfcef9493cd215a8/session/5de907acdfcef9493cd215a9/student/5de8e4ddf74cf254d04f90da

5de907acdfcef9493cd215a8--> ИД на курс

5de907acdfcef9493cd215a9--> идентификатор на сесия

Отговорът ще бъде така:

{
    "n": 1,
    "nModified": 1,
    "ok": 1
}

Когато погледнем нашия курс, виждаме, че студентът е премахнат:

{
    "_id" : ObjectId("5de907acdfcef9493cd215a8"),
    "name" : "Course 1",
    "sessions" : [
        {
            "date" : ISODate("2019-12-05T16:32:41.998+03:00"),
            "_id" : ObjectId("5de907acdfcef9493cd215a9"),
            "students" : [
                {
                    "_id" : ObjectId("5de907acdfcef9493cd215ac"),
                    "userName" : ObjectId("5de8e4c8f74cf254d04f90d8"),
                    "status" : 1
                },
                {
                    "_id" : ObjectId("5de907acdfcef9493cd215ab"),
                    "userName" : ObjectId("5de8e4d5f74cf254d04f90d9"),
                    "status" : 1
                }
            ]
        }
    ],
    "__v" : 0
}

Както виждаме студента с потребителско име със стойност 5de8e4ddf74cf254d04f90da вече не съществува в сесията на курса, което означава, че е премахнат.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose Опит за отваряне на незатворена връзка

  2. Как да намерите дължината на масива mongodb

  3. Mongodb shell mongo:Обикновено е разрешено само едно използване на всеки адрес на сокет (протокол/мрежов адрес/порт). за сокет:0.0.0.0:27017

  4. MongoDb:Предимство от използването на ObjectID спрямо низ, съдържащ идентификатор?

  5. Последен запис по дата за всяка група mongodb на артикул