gpt4 book ai didi

azure - Azure CosmosDB SQL API 中的左连接

转载 作者:行者123 更新时间:2023-12-03 02:47:35 25 4
gpt4 key购买 nike

我已使用 SQL API 在 Azure Cosmos DB 集合中使用 JOIN 来查询文档。

我有两份联系文件,一份有特性地址,另一份没有地址。

我需要获取所有人员的地址列表(包括没有地址的人员)。我使用下面的查询来执行此操作。但它给出了有地址的人员列表。

有什么方法可以进行 LEFT JOIN 吗?

查询:

SELECT base.FirstName, base.LastName, Address.City FROM ContactPerson base JOIN Address IN base.Address

示例文档:

[
{
"FirstName": "Saravana",
"LastName": "Kumar",
"Address": [
{
"City": "aaaa"
},
{
"City": "bbbb"
}
]
},
{
"FirstName": "Jayanth",
"LastName": "T"
}
]

预期输出:

[
{
"FirstName": "Saravana",
"LastName": "Kumar",
"City": "aaa"
},
{
"FirstName": "Saravana",
"LastName": "Kumar",
"City": "bbbb"
},
{
"FirstName": "Jayanth",
"LastName": "T"
}
]

实际输出:

[
{
"FirstName": "Saravana",
"LastName": "Kumar",
"City": "bbbb"
},
{
"FirstName": "Saravana",
"LastName": "Kumar",
"City": "bbbb"
}
]

最佳答案

据我所知,cosmos db 目前还不支持 left join,你可以投票支持这个 thread .

作为解决方法,我建议您在存储过程中使用 2 个不同的 sql,然后合并其中的结果。

1.从 ContactPerson 库中选择 base.FirstName、base.LastName,其中 NOT IS_DEFINED(base.Address)

2.从联系人基数中选择基数.名字、基数.姓氏、地址.城市 基数连接地址 IN 基数.地址

SP:

function sample() {
var collection = getContext().getCollection();

var array = [];
var isAccepted = collection.queryDocuments(
collection.getSelfLink(),
'SELECT base.FirstName, base.LastName, Address.City FROM ContactPerson base JOIN Address IN base.Address',
function (err, feed, options) {
if (err) throw err;
if (!feed || !feed.length) {
var response = getContext().getResponse();
response.setBody('no docs found');
}
else {
array.push(feed);
}
});

var isAccepted1 = collection.queryDocuments(
collection.getSelfLink(),
'SELECT base.FirstName, base.LastName FROM ContactPerson base where NOT IS_DEFINED(base.Address)',
function (err, feed1, options) {
console.log(222)
if (err) throw err;
if (!feed1|| !feed1.length) {
var response = getContext().getResponse();
response.setBody('no docs found');
}
else {

array.push(feed1);

}
});
var response = getContext().getResponse();
response.setBody(array);

if (!isAccepted) throw new Error('The query was not accepted by the server.');
}

您可以根据需要调整输出格式。

关于azure - Azure CosmosDB SQL API 中的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58009521/

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