Броят на различни не работи с cosmosdb

Следната отделна заявка вече работи:

SELECT DISTINCT c.name  FROM c

но заявката по-долу не работи, има ли нещо нередно тук?

SELECT COUNT(DISTINCT c.name) FROM c

Failed to query documents for collection products: {"code":400,"body":"{\"code\":\"BadRequest\",\"message\":\"Message: {\\\"errors\\\":[{\\\"severity\\\":\\\"Error\\\",\\\"location\\\":{\\\"start\\\":13,\\\"end\\\":21},\\\"code\\\":\\\"SC1001\\\",\\\"message\\\":\\\"Syntax error, incorrect syntax near 'DISTINCT'.\\\"}]}\\r\\nActivityId: 05bf1757-ce1b-4ee4-9ae5-f2b778c55ded, Microsoft.Azure.Documents.Common/2.0.0.0\"}","activityId":"05bf1757-ce1b-4ee4-9ae5-f2b778c55ded"}

person Santosh    schedule 22.10.2018    source източник
comment
Изглежда, че ще трябва да получите набора от резултати от първата си (работеща) заявка и след това да направите избор на броене върху това.   -  person Tim Biegeleisen    schedule 22.10.2018
comment
Ако смятате, че отговорът ми ви помага, моля, маркирайте го за отговор. Благодаря.   -  person Jay Gong    schedule 25.10.2018
comment
Надявам се това да работи. SELECT VALUE COUNT(1) from (SELECT DISTINCT c.name from c)   -  person Antony    schedule 26.08.2019


Отговори (1)


SELECT COUNT(DISTINCT c.name) FROM c е синтактична грешка, която не се поддържа от Cosmos DB.

Можете да използвате съхранена процедура, за да изпълните задачата за преброяване за вашия резултати от заявката:

function sample() {
    var collection = getContext().getCollection();
    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT distinct r.name FROM root r',
    function (err, feed, options) {
        if (err) throw err;

        if (!feed || !feed.length) {
            var response = getContext().getResponse();
            response.setBody('no docs found');
            //or return 0 
        }
        else {
            var response = getContext().getResponse();
            response.setBody(feed.length);
        }
    });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}
person Jay Gong    schedule 23.10.2018
comment
Най-добре е просто да гласувате за затваряне на този въпрос като дубликат и след това да добавите отговора си към другия въпрос. - person David Makogon; 23.10.2018