暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Tips:MongoDB中的embedded document(嵌套文档)查询注意事项

猿的话 2021-04-20
1474
点击蓝字 关注我们


背景

最近在查询MongoDB中的数据时,发现查询不到数据~




环境情况

    查询语句为:
    db.person.find({"name":{
    last: "Matsumoto",
    first: "Yukihiro"
    }})


    数据库中的数据为:

      {
      "_id" : <value>,
      "name" : { "first" : <string>, "last" : <string> }, // embedded document
      "birth" : <ISODate>,
      "death" : <ISODate>,
      "contribs" : [ <string>, ... ], // Array of Strings
      "awards" : [
      { "award" : <string>, year: <number>, by: <string> } // Array of embedded documents
      ...
      ]
      }

      在查询时,使用了“name”字段,但是指定name属性时候,顺序与数据库中的数据不一致,怀疑是顺序原因导致的。



      定位及解决

          使用与数据库中相同顺序的查询,可以获取到数据:

        db.person.find({"name":{
           first: "Yukihiro",
           last"Matsumoto"
        }})

        查阅官方文档:https://docs.mongodb.com/manual/reference/method/db.collection.find/ 

        The name field must match the embedded document exactly.

            可以看出,在查询嵌套的文档时候,字段顺序需要与存储时候的保持一致,否则会查询不到数据。

            在使用比较不常用的语法时,应当现在测试环境中进行调试,并且认真查阅官方的文档,避免浪费过多时间debug。




        文章推荐

        涂鸦玩法2 -- 设备状态存储展示

        涂鸦玩法1 -- 借了几个设备

        TiDB调研手记2 -- 锁冲突


        扫描右方二维码                关注猿的话




        文章转载自猿的话,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论