V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nightstart
V2EX  ›  问与答

Mongo 统计记录子节点的数据 有办法吗

  •  
  •   nightstart · 2018-06-01 07:53:43 +08:00 · 1312 次点击
    这是一个创建于 2359 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有如下的这么一个数据结构,这是 mongo 一张表里的一条记录. 每条记录下面有一些特定的 key 每个 key 对应的是一个 dict. 想像 mongo 大佬请教一下 假设我每条记录的 key 都是一样的,都是 task_uuid、UNION、SUBQUERY_REP、DML_SORT

    1. 怎么统计他们的 value 里面的记录条数 -> 引申出来 怎么统计 value 的记录的 value 的条数
    2. 拿数据的时候针对于 value 的字典(infomation) 怎么才能指定拿出来的字段
    3. 假设每条记录的 key 是不一样的 也就是会动态变化 不止是上面的 task_uuid、UNION、SUBQUERY_REP、DML_SORT 这四个 key 又该怎么做呢

    抱拳(请各位 mongo 大佬指教

    {
        "_id" : ObjectId("1321321321421"),
        "UNION" : {
            "infomation" : {
                "sql_id" : "321321432",
                "sql_text" : "select count(*) count1 from",
                "obj_name" : null,
                "plan" : []
            },
            "infomation" : {
                "sql_id" : "43zcf95vbk32143vjx",
                "sql_text" : "from appuser1.objectname1  union\nselect count(*) count19 from appuser1.objectname1 ",
                "obj_name" : null,
                "plan" : []
            },
            "scores" : 4.0
        },
        "SUBQUERY_REP" : {},
        "DML_SORT" : {},
        "task_uuid" : "09ae20b4-64e8-11e8-b712-f45c832138f3b",
    }
    
    4 条回复    2018-06-01 11:07:11 +08:00
    xkeyideal
        1
    xkeyideal  
       2018-06-01 08:58:08 +08:00
    mongo 也有 group 语句的,那么 map 的指定信息,不是 bson.M{"UNION.information":"xxx"},

    卧槽,你这样例数据有问题吧,map 怎么能有两个同样的 key
    duz
        2
    duz  
       2018-06-01 09:06:19 +08:00 via iPhone
    @xkeyideal 我以前遇到过一次,同样的 key,每次修改的是 Key(A)读出来的是 Key(B)
    nightstart
        3
    nightstart  
    OP
       2018-06-01 09:47:26 +08:00
    @xkeyideal 抱歉抱歉我的锅 2 我修改了一些信息 没想到两个都写了 information
    xkeyideal
        4
    xkeyideal  
       2018-06-01 11:07:11 +08:00
    {
    "_id" : ObjectId("1321321321421"),
    "UNION" : {
    "321321432" : {
    "sql_id" : "321321432",
    "sql_text" : "select count(*) count1 from",
    "obj_name" : null,
    "plan" : []
    },
    "43zcf95vbk32143vjx" : {
    "sql_id" : "43zcf95vbk32143vjx",
    "sql_text" : "from appuser1.objectname1 union\nselect count(*) count19 from appuser1.objectname1 ",
    "obj_name" : null,
    "plan" : []
    },
    "scores" : 4.0
    },
    "SUBQUERY_REP" : {},
    "DML_SORT" : {},
    "task_uuid" : "09ae20b4-64e8-11e8-b712-f45c832138f3b",
    }
    把存储结构改成这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:35 · PVG 08:35 · LAX 16:35 · JFK 19:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.