【问题标题】:Mongodb query on json objectMongodb查询json对象
【发布时间】:2015-12-15 14:07:10
【问题描述】:

我正在尝试根据我的课程 json 对象查找课程。如果我只有课程编号 12712 和讲座:A,那么如何在一个 json 对象(课程对象中的第一个对象)中找到该课程,其中包含许多这些课程?我的尝试是

db.courses.find({"courses.12712"})

但我遇到了一个错误

JSON 对象的片段:

{“_id”:ObjectId(“566f824641b9b2eba94a9ff4”),“课程”:{“12712” :{“系”:“土木与环境工程”,“讲座”:[ {“讲师”:[“Vanbriesen”],“部分”:[],“讲座”:“A”, “会议”:[{“房间”:“DH 2302”,“地点”:“匹兹堡, 宾夕法尼亚”,“结束”:“04:20PM”,“天”:“MW”,“开始”:“03:00PM”} ] } ], "name" : "Introduction to Sustainable Engineering", "units" : 12、“prereqs”:“”、“学期”:[“F”]、“coreqs”:“”、“desc”: “本课程从概述开始......” }}

【问题讨论】:

    标签: mongodb-query


    【解决方案1】:

    MongoDB 有 query operators 你可以使用 $eq 运算符来匹配你想要的字段(在你的情况下它是一个数字)。查看他们的官方文档here

    语法:

    { <field>: { $eq: <value> } }
    

    在你的情况下,你或许可以尝试:

    db.courses.find({ <property you want to match>: { $eq: "12712" } });
    

    【讨论】:

      【解决方案2】:

      使用$exists 运算符确定文档中的特定字段。

      db.courses.find({"courses.12712" : { $exists:true }})
      

      如果您想检查讲座是否应该至少包含一个元素,那么

      db.courses.find({"courses.12712" : { $exists:true },"courses.12712.lectures.0" : { $exists:true } })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-09
        • 2021-09-24
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多