Поддержка отдельного была добавлена 19 октября 2018
Следующий запрос работает просто отлично
SELECT distinct value c FROM c join p in c.products
Однако, он все еще не работает для подсчета.
Обходное решение для подсчета различных значений - это создание хранимой процедуры для выполнения определенного подсчета.Он будет в основном запрашивать и продолжаться до конца и возвращать счетчик.
Если вы передадите отдельный запрос, как указано выше, в хранимой процедуре, приведенной ниже, вы получите отдельный счетчик
function count(queryCommand) {
var response = getContext().getResponse();
var collection = getContext().getCollection();
var count = 0;
query(queryCommand);
function query(queryCommand, continuation){
var requestOptions = { continuation: continuation };
var isAccepted = collection.queryDocuments(
collection.getSelfLink(),
queryCommand,
requestOptions,
function (err, feed, responseOptions) {
if (err) {
throw err;
}
// Scan results
if (feed) {
count+=feed.length;
}
if (responseOptions.continuation) {
// Continue the query
query(queryCommand, responseOptions.continuation)
} else {
// Return the count in the response
response.setBody(count);
}
});
if (!isAccepted) throw new Error('The query was not accepted by the server.');
}
}
ПроблемаЭтот обходной путь заключается в том, что он потенциально может пересечь лимит RU для вашей коллекции и быть неудачным.Если это так, вы можете реализовать подобный код на стороне сервера, что не так уж и хорошо.