sql >> Database >  >> NoSQL >> MongoDB

Hoe een genest object te verwijderen op basis van zijn ObjectId?

Je kunt de volgende DELETE-route gebruiken om een ​​student uit een cursussessie te verwijderen.

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");
    }
  }
);

Laten we zeggen dat je een cursus als deze hebt:

{
    "_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
}

Als we de student met gebruikersnaam met waarde 5de8e4ddf74cf254d04f90da willen verwijderen , kunnen we een DELETE-verzoek naar onze route sturen met een url als deze:

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

5de907acdfcef9493cd215a8--> courseId

5de907acdfcef9493cd215a9--> sessionId

Het antwoord zal als volgt zijn:

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

Als we naar onze cursus kijken, zien we dat de student is verwijderd:

{
    "_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
}

Zoals we de student zien met gebruikersnaam met waarde 5de8e4ddf74cf254d04f90da bestaat niet meer in de cursussessie, wat betekent dat het is verwijderd.




  1. MongoDB verbinden met Ruby met zelfondertekende certificaten voor SSL

  2. Golang GraphQL MongoDB Worstelend om datum en id uit de database te halen

  3. Hoe voer ik een explain-query uit met de 2.4 C# Mongo-driver?

  4. Kan geen verbinding maken met mongoDB met Nodejs met Docker-compose