sql >> データベース >  >> NoSQL >> MongoDB

ObjectIdに基づいてネストされたオブジェクトを削除するにはどうすればよいですか?

    次のDELETEルートを使用して、コースセッションから学生を削除できます。

    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のuserNameを持つ学生を削除する場合 、次のようなURLを使用してルートにDELETEリクエストを送信できます:

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

    5de907acdfcef9493cd215a8-> courseId

    5de907acdfcef9493cd215a9-> sessionId

    応答は次のようになります:

    {
        "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. MongoDBのマルチコレクション、マルチドキュメントの「トランザクション」

    2. Mongooseでid配列クエリを実行するにはどうすればよいですか?

    3. Pythonからredisに無限大を渡すにはどうすればよいですか?

    4. Django Rest FrameworkでRedisキャッシュを実装するにはどうすればよいですか?