如何在 MongoDb 中查询嵌入式文档?

罗伊

我的文档包含了 MongoDB 中将近七个级别的文档,现在我需要编写一个查询来检查所有条件,例如,subject=java, topic=oops, level=l1, complexity=easy, questionType=mcq基于此要求显示集合中的所有问题。任何人请帮助我,提前致谢。

{
    "_id" : ObjectId("59f71b4d0bec333e1707a8d3"),
    "_class" : "com.wipro.domain.QuestionBank",
    "subjectLists" : [ 
        {
            "subject" : "java",
            "topicList" : [ 
                {
                    "topic" : "oops",
                    "levelList" : [ 
                        {
                            "level" : "l1",
                            "complexityList" : [ 
                                {
                                    "complexity" : "easy",
                                    "questionTypeList" : [ 
                                        {
                                            "questionType" : "mcq",
                                            "questionList" : [ 
                                                {
                                                    "_id" : "2",
                                                    "question" : "2st question",
                                                    "options" : [ 
                                                        {
                                                            "a" : "1",
                                                            "b" : "2",
                                                            "c" : "3",
                                                            "d" : "4"
                                                        }
                                                    ],
                                                    "correctAnswer" : "b",
                                                    "marksAlloted" : "1"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}


{
    "_id" : ObjectId("59f71b700bec333e1707a8d4"),
    "_class" : "com.wipro.domain.QuestionBank",
    "subjectLists" : [ 
        {
            "subject" : "java",
            "topicList" : [ 
                {
                    "topic" : "threds",
                    "levelList" : [ 
                        {
                            "level" : "l3",
                            "complexityList" : [ 
                                {
                                    "complexity" : "hard",
                                    "questionTypeList" : [ 
                                        {
                                            "questionType" : "mcq",
                                            "questionList" : [ 
                                                {
                                                    "_id" : "3",
                                                    "question" : "3rd question",
                                                    "options" : [ 
                                                        {
                                                            "a" : "1",
                                                            "b" : "2",
                                                            "c" : "3",
                                                            "d" : "4"
                                                        }
                                                    ],
                                                    "correctAnswer" : "b",
                                                    "marksAlloted" : "1"
                                                }
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}
塞尔坎·阿尔斯兰

你可以试试这个脚本。

db.getCollection('document').aggregate([
{
    $match:{
        $and: [
            {"subjectLists.subject": "java"}
            ,{"subjectLists.topicList.topic": "oops"}
            ,{"subjectLists.topicList.levelList.level": "l1"}
            ,{"subjectLists.topicList.levelList.complexityList.complexity": "easy"}
            ,{"subjectLists.topicList.levelList.complexityList.questionTypeList.questionType": "mcq"}
        ]       
    }    
},
{
    $unwind: "$subjectLists"
}
,{
    $unwind: "$subjectLists.topicList"
}
,{
    $unwind: "$subjectLists.topicList.levelList"
}
,{
    $unwind: "$subjectLists.topicList.levelList.complexityList"
}
,{
    $unwind: "$subjectLists.topicList.levelList.complexityList.questionTypeList"
}
,{
    $unwind: "$subjectLists.topicList.levelList.complexityList.questionTypeList.questionList"
},
{
    $project: {
        "questionList":  "$subjectLists.topicList.levelList.complexityList.questionTypeList.questionList"
    }   
}
,
{
        $replaceRoot: { newRoot: "$questionList" }
}
])

结果:

{
    "_id" : "2",
    "question" : "2st question",
    "options" : [ 
        {
            "a" : "1",
            "b" : "2",
            "c" : "3",
            "d" : "4"
        }
    ],
    "correctAnswer" : "b",
    "marksAlloted" : "1"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Spring Data MongoDB Repository以greatThan查询嵌入式文档?

如何在mgo Mongodb中选择所有相同类型的嵌入式文档?

如何在mongoDB中的嵌入式文档中提取特定元素

基于范围查询MongoDB中嵌入式文档的数组

MongoDB查询以查找多个嵌入式文档

如何在mongodb中搜索嵌入式文档?

查询Spring Data MongoDB中嵌入式文档的数组

如何使用id mongodb在嵌入式文档数组中查找数据?

如何使用mongoDB和spring数据在嵌入式文档中创建id

MongoDB查询-聚合和嵌入式文档

如何从嵌入式文档数组将mongodb中的ISO日期转换为'yyyy-mm-dd hh:mm:ss'?

如何在mongodb中使用node.js删除嵌入式(嵌套)文档

如何在嵌入式数组mongodb中查询嵌入式文档

使用Presto查询MongoDB嵌入式/嵌套文档的数组

如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

如何在mongoDB中的多对多关系中使用嵌入式文档结构?

MongoDB嵌入式文档自我查询

如何在MongoDB中的嵌入式文档中获得同一级别的所有字段

如何使用Mongoose将值推入MongoDB中嵌入式文档中的数组?

查询MongoDB中的嵌入式文档

在文档中引用文档的嵌入式数组的嵌入式数组上查询Doctrine2和MongoDB

如何在MongoDB中查询数组中的单个嵌入式文档?

与数组比较,如何在mongodb中检索部分嵌入式文档?

在mongodb中展开嵌入式文档

MongoDB,如何获取刚在嵌入式文档中创建的ObjectId?

如何查询Mongodb的嵌入式数组

如何在MongoDB的数组字段中查询和删除嵌入式对象?

如何将现有的子文档推送到MongoDB中的嵌入式数组中?

在 MongoDB 中搜索嵌入式文档?