gpt4 book ai didi

azure - cosmos documentDB 中是否存在带有搜索直到规则的查询

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

所以我尝试从 Cosmos DocumentDB 数据库中查询一些数据,如下所示

这是我的数据:

{

"id": "**********",

"triggers": [
{
"type": "enter_an_area",
"trigger_identity": "***********",

},

},
{
"type": "enter_an_area",
"trigger_identity": "********",

},

},
{
"type": "exit_an_area",
"trigger_identity": "*******",


},

这是我收藏的一个文档,其中每个用户都有一个具有唯一ID的文档,现在我想做的是计算使用特定触发器的用户数量,一个用户可能有多个相同的触发器有时,正如您在示例“enter_an_area”中看到的那样,它有多个输入项,但我仍然想将其算作一个输入项。

我使用此查询来获取特定触发器的计数:

从 u JOIN t in u.triggers WHERE CONTAINS(t.type, "enter_an_area") 中选择 VALUE COUNT(1)

但对于上面的示例,这将返回:2,而我希望它返回 1

documentdb 中有执行此操作的查询吗?如果没有这样的查询,有没有办法返回不重复的结果?因为作为一种解决方案,我认为我可以返回使用此特定触发器的 ID,但是当用户有多个触发器输入时,我会得到重复的 ID。

最佳答案

您的问题似乎与查询结果连接数组的distinct之类的函数有关。我建议您使用存储过程来实现您的解决方案作为解决方法。

请引用我的示例存储过程:

function sample() {
var collection = getContext().getCollection();
var isAccepted = collection.queryDocuments(
collection.getSelfLink(),
'SELECT u.id FROM u JOIN t in u.triggers WHERE CONTAINS(t.type, "enter_an_area")',
function (err, feed, options) {
if (err) throw err;
if (!feed || !feed.length) getContext().getResponse().setBody('no docs found');
else {
var returnResult = [];
var temp =''
for(var i = 0;i<feed.length;i++){
var valueStr = feed[i].id;
if(valueStr != temp){
temp = valueStr;
returnResult.push(feed[i])
}
}
getContext().getResponse().setBody(returnResult.length);
}
});

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

希望对您有帮助。

关于azure - cosmos documentDB 中是否存在带有搜索直到规则的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49749748/

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