MST

星途 面试题库

面试题:MongoDB分组_id字段在复杂嵌套数据中的设计

假设MongoDB中有一个集合存储用户订单信息,每个订单文档包含用户信息、订单列表,订单列表中又有多个商品项(每个商品项包含商品类别、价格等)。现在要按用户以及商品类别分组,统计每个用户购买每个类别商品的总金额,这种复杂嵌套数据结构下,_id字段该如何巧妙设计以实现高效分组?
13.8万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

在这种情况下,_id 字段可以设计为一个包含用户信息标识和商品类别字段的文档,示例如下:

{
    "_id": {
        "userId": "<用户标识字段>",
        "category": "<商品类别字段>"
    },
    "totalAmount": <总金额>
}

通过这样的设计,userId 用于标识用户,category 用于标识商品类别,在进行分组统计时,_id 中的这两个字段能有效区分不同用户和不同商品类别的组合,实现高效分组。同时,在 _id 之外,额外记录 totalAmount 字段来统计购买该类别商品的总金额。