Mongodb内嵌数组的完全匹配查询

Posted 吃喝玩乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb内嵌数组的完全匹配查询相关的知识,希望对你有一定的参考价值。

样例数据:


    "cNo" : "11",
    "Details" : [
        {
             "dDate" : ISODate("2017-04-01T00:00:00.000+0800"),
             "bNo" : "No00000000497"
        },
        {
             "dDate" : ISODate("2017-05-01T00:00:00.000+0800"),
             "bNo" : "No00000000497"
        },
        {
            "dDate" : ISODate("2017-06-01T00:00:00.000+0800"),
             "bNo" : "No00000000497"
        }
    ]
}
{
    "cNo" : "12",    
    "Details" : [
        {
            "dDate" : ISODate("2017-04-01T00:00:00.000+0800"),
            "bNo" : "No00000000497"
        },
        {
            "dDate" : ISODate("2017-05-01T00:00:00.000+0800"),
            "bNo" : "No00000000497"
        },
        {
            "dDate" : ISODate("2017-06-01T00:00:00.000+0800"),
            "bNo" : "No00000000500"
        }
    ]
}

    "cNo" : "13",
    "Details" : [
        {
            "dDate" : ISODate("2017-04-01T00:00:00.000+0800"),
            "bNo" : "No00000000497"
        },
        {
            "dDate" : ISODate("2017-05-01T00:00:00.000+0800"),
            "bNo" : "No00000000497"
        },
         {
            "dDate" : ISODate("2017-06-01T00:00:00.000+0800"),
            "bNo" : "No00000000497"
        }
    ]
}

查询条件:dDate等于2017-06-01,且bNo等于No00000000497的数据

正确查询语句:{Details:{ $elemMatch:{ "bNo":"No00000000497","dDate":  ISODate("2017-10-01T00:00:00.000+0800") } }}

查询结果:11、13

(非完全匹配/错误)查询语句:{"Details.bNo":"No00000000497","Details.dDate":ISODate("2017-10-01T00:00:00.000+0800")}

查询结果:11、12、13

以上是关于Mongodb内嵌数组的完全匹配查询的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb如何查询内嵌数组的指定元素?

MongoDB 如何查询和修改内嵌文档

高可用的MongoDB集群

MongoDB 集合间关联查询后通过$filter进行筛选

mongodb 查询数组内符合条件的值

MongoDB 的功能