gpt4 book ai didi

mongodb - AWS DocumentDB 是否支持在单个查询中加入 3 个以上的集合?

转载 作者:行者123 更新时间:2023-12-04 15:05:05 25 4
gpt4 key购买 nike

是否可以通过单个查询将 AWS DocumentDB 中的 3 个独立集合连接在一起(类似于此处线程的解决方案:How can I perform nested “joins” (joining 3 or more collections) in a MongoDB aggregation pipeline?

我觉得可能不会,但我不认为 AWS 会立即出现并且在任何地方都明确表示过。

Developer Guide说:

Amazon DocumentDB supports the ability to do equality matches (forexample, left outer join) but does not support uncorrelatedsubqueries.

如果我知道什么是“不相关的子查询”,那会更有帮助。

另外,list of MongoDB APIs that DocumentDB supports表示完全不支持 $let 变量运算符。他们引用的 $let 变量运算符是否与以下查询中使用的 $lookup 阶段中的 let 表达式完全相同加入 3 个集合?

db.customers.aggregate([
{
$lookup: {
from: "orders",
let: { customer_id: "$customer_id" },
pipeline: [
{ $match: { $expr: { $eq: ["$$customer_id", "$customer_id"] } } },
{
$lookup: {
from: "orderitems",
localField: "order_id",
foreignField: "order_id",
as: "items"
}
}
],
as: "orders"
}
}
])

在 AWS DocumentDB 中是否可以在单个 NoSQL 查询中加入 3 个以上的集合,如果不能,推荐/最有效的方法是什么?

最佳答案

DocumentDB doc :

Amazon DocumentDB supports the ability to do equality matches (for example, left outer join) but does not support uncorrelated subqueries.

MongoDB doc :

相等匹配的语法如下:

{
$lookup:
{
from: <collection to join>,
localField: <field from the input documents>,
foreignField: <field from the documents of the "from" collection>,
as: <output array field>
}
}

不相关的子查询具有以下语法:

{
$lookup:
{
from: <collection to join>,
let: { <var_1>: <expression>, …, <var_n>: <expression> },
pipeline: [ <pipeline to execute on the collection to join> ],
as: <output array field>
}
}

因此 DocumentDB 不支持第二种语法。

关于mongodb - AWS DocumentDB 是否支持在单个查询中加入 3 个以上的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66308954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com