MST

星途 面试题库

面试题:MongoDB复杂嵌套文档的指定列查询与投影

给定一个集合‘orders’,文档结构为{‘order_id’: 1, ‘customer’: {‘name’: ‘Alice’, ‘phone’: ‘123 - 456 - 7890’}, ‘products’: [{‘product_name’: ‘Laptop’, ‘price’: 1000}, {‘product_name’: ‘Mouse’, ‘price’: 50}]}。请编写查询语句,返回每个订单的‘order_id’、客户的‘name’以及每个产品的‘product_name’,并说明在处理嵌套文档时投影操作需要注意什么。
30.4万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

1. 使用 MongoDB 查询语句(假设是 MongoDB 数据库,因为文档结构类似 MongoDB 的文档结构)

db.orders.aggregate([
    {
        $unwind: "$products"
    },
    {
        $project: {
            order_id: 1,
            customer_name: "$customer.name",
            product_name: "$products.product_name",
            _id: 0
        }
    }
]);

2. 投影操作处理嵌套文档时的注意事项

  • 字段路径:在投影中引用嵌套文档的字段时,需要使用点(.)符号来指定完整的字段路径,如$customer.name$products.product_name,这样才能准确访问到嵌套层级中的具体字段。
  • 展开数组类型的嵌套文档:如果嵌套文档是数组形式(如products数组),在投影之前通常需要使用$unwind操作符将数组展开,以便每个数组元素能独立进行投影操作,否则投影结果可能不符合预期。
  • 避免投影_id字段:默认情况下,MongoDB 会在查询结果中包含_id字段。如果不需要该字段,应在投影阶段明确设置_id: 0来排除它。