使用 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}]
假设我有以下文件:
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}]