使用 Presto 查询 MongoDB 嵌入/嵌套文档数组

问题描述

假设我有以下文件

db.inventory.insertMany( [
   { item: "journal",instock: [ { warehouse: "A",qty: 5 },{ warehouse: "C",qty: 15 } ] },{ item: "notebook",instock: [ { warehouse: "C",qty: 5 } ] },{ item: "paper",qty: 60 },{ warehouse: "B",{ item: "planner",qty: 40 },{ item: "postcard",instock: [ { warehouse: "B",qty: 15 },qty: 35 } ] }
]);

我想根据仓库和数量查询库存文档。在 mongo shell 中,我会这样做:

db.inventory.find( { "instock": { $elemmatch: { qty: 5,warehouse: "A" } } } )

我将如何在 Presto 中执行此操作?

解决方法

instock 将映射到 array(row(warehouse varchar,qty double)) 类型,$elemMatch 等于 Trino(以前的 Presto SQL)中的 any_match 数组函数。

select * from inventory where any_match(instock,x -> x.qty = 5 and x.warehouse = 'A');
  item   |                      instock
---------+---------------------------------------------------
 journal | [{warehouse=A,qty=5.0},{warehouse=C,qty=15.0}]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...