条件失败的mongodb

问题描述 投票:0回答:1

我正在为我当前的项目mongodb工作我的集合如下

{
"_id" : ObjectId("5a3a567a8fb6e20f67cb10f7"),
"player_id" : "5a26453db767c01262eddc4e",
"quiz_type" : "Single",
"created_date" : ISODate("2017-12-20T12:24:26Z"),
"questions_answered" : [
    {
        "question_id" : ObjectId("5a3a0bfc2d53f131068b4567"),
        "player_selection_status" : "Wrong",
        "time_taken" : 10,
        "points_gained" : 0,
        "like" : 1,
        "answered_date" : "2017-12-20T17:54:30+05:30"
    },
    {
        "question_id" : ObjectId("5a3a0bfc2d53f131068b4568"),
        "player_selection_status" : "Correct",
        "time_taken" : 10,
        "points_gained" : 5,
        "like" : 1,
        "answered_date" : "2017-12-20T17:54:32+05:30"
    },
    {
        "question_id" : ObjectId("5a3a0bfc2d53f131068b4569"),
        "player_selection_status" : "Correct",
        "time_taken" : 10,
        "points_gained" : 5,
        "like" : 1,
        "answered_date" : "2017-12-20T17:54:34+05:30"
    },
    {
        "question_id" : ObjectId("5a3a0bfc2d53f131068b456a"),
        "player_selection_status" : "Wrong",
        "time_taken" : 10,
        "points_gained" : 0,
        "like" : 1,
        "answered_date" : "2017-12-20T17:54:35+05:30"
    },
    {
        "question_id" : ObjectId("5a3a0bfc2d53f131068b456c"),
        "player_selection_status" : "Correct",
        "time_taken" : 10,
        "points_gained" : 5,
        "like" : 1,
        "answered_date" : "2017-12-20T17:54:37+05:30"
    }
],
"__v" : 0

}

我需要获取points_gained:5的数据,我的查询是

db.player_quiz.find({player_id: "5a26453db767c01262eddc4e", 'questions_answered.points_gained': 5}).pretty()

使用上面的查询我得到所有结果..我只需要有questions_answered.points_gained:5的记录

请帮我解决一下。

mongodb mongoose mongodb-query
1个回答
1
投票
db.player_quiz.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $unwind: {
                "path": '$questions_answered'
            }
        },

        // Stage 2
        {
            $match: {
                'questions_answered.points_gained': 5
            }
        },

        // Stage 3
        {
            $group: {
                _id: '$_id',
                questions_answered: {
                    $addToSet: '$questions_answered'
                },
                doc: {
                    $first: '$$ROOT'
                }
            }
        },

        // Stage 4
        {
            $project: {
                questions_answered: 1,
                "player_id": '$doc.player_id',
                'quiz_type': '$doc.quiz_type',
                'created_date': '$doc.created_date'
            }
        },

    ]



);
© www.soinside.com 2019 - 2024. All rights reserved.