cosmos documentDB 中是否有一个查询直到规则
is there a query in cosmos documentDB with a search until rule
所以我正在尝试从 cosmos documentdb 数据库中查询一些数据,如下所示
这是我的数据:
{
"id": "**********",
"triggers": [
{
"type": "enter_an_area",
"trigger_identity": "***********",
},
},
{
"type": "enter_an_area",
"trigger_identity": "********",
},
},
{
"type": "exit_an_area",
"trigger_identity": "*******",
},
这是我的 collection 的一个文档,其中每个用户都有一个具有唯一 ID 的文档,现在我想做的是计算使用特定触发器的用户数量,一个用户可能有多次相同的触发器,正如您在示例中看到的 "enter_an_area" 有多个条目,但我仍然想将其计为一个条目。
我使用此查询来获取特定触发器的计数:
SELECT 值计数 (1) 来自 u JOIN t in u.triggers WHERE CONTAINS(t.type, "enter_an_area")
但对于上面的示例,这将是 return: 2 我希望它成为 return 1
documentdb 中是否有执行此操作的查询?如果没有这样的查询,有没有办法 return 结果没有重复?因为作为一种解决方案,我认为我可以 return 使用此特定触发器的 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.');
}
希望对你有帮助。
所以我正在尝试从 cosmos documentdb 数据库中查询一些数据,如下所示
这是我的数据:
{
"id": "**********",
"triggers": [
{
"type": "enter_an_area",
"trigger_identity": "***********",
},
},
{
"type": "enter_an_area",
"trigger_identity": "********",
},
},
{
"type": "exit_an_area",
"trigger_identity": "*******",
},
这是我的 collection 的一个文档,其中每个用户都有一个具有唯一 ID 的文档,现在我想做的是计算使用特定触发器的用户数量,一个用户可能有多次相同的触发器,正如您在示例中看到的 "enter_an_area" 有多个条目,但我仍然想将其计为一个条目。
我使用此查询来获取特定触发器的计数:
SELECT 值计数 (1) 来自 u JOIN t in u.triggers WHERE CONTAINS(t.type, "enter_an_area")
但对于上面的示例,这将是 return: 2 我希望它成为 return 1
documentdb 中是否有执行此操作的查询?如果没有这样的查询,有没有办法 return 结果没有重复?因为作为一种解决方案,我认为我可以 return 使用此特定触发器的 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.');
}
希望对你有帮助。