使用 Presto 查询 MongoDB Embedded/Nested 文档数组

Querying an array of MongoDB Embedded/Nested Documents with Presto

假设我有以下文件:

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

我想根据仓库和数量查询库存文件。在 mongo shell 我会做:

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

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

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

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}]