【发布时间】:2018-06-22 21:45:27
【问题描述】:
我正在尝试为伪 SQL 语句生成 MongoDB 版本 3.6 查询:
SELECT table1.c1, table1.c2
FROM table1
WHERE (table1.c1 IN (SELECT table2.c1 FROM table2 U0 WHERE (U0.c2 IN (1, 2))))
我该怎么做?我正在寻找单一的聚合查询语法。
编辑
该问题不与this 问题重复。那里的解释假设查找阶段的输出数组将采用以下形式:
noncr = [{_id: ObjectID('xxxx'), blockedIDs: [ObjectID('yyy'), ObjectID('zzz')]}]
我正在查看的 sql 查询将具有 $lookup 的输出数组,如下所示:
table2 = [{_id: ObjectID('xxxx'), c1: 35},
{_id: ObjectID('yyyy'), c1: 34},
{_id: ObjectID('zzzz'), c1: 37}]
最后需要将数组转换为just
table2 = [35, 34, 37]
所以可以这样使用:
$match: {$expr: {$in: [$c1, $table2]}}
本质上,我正在寻找一种方法来转换table2,如上所示。这可能吗?
【问题讨论】:
标签: mongodb