Произошла неизвестная ошибка сервера при обработке этого запроса при запросе CosmosDB - PullRequest
0 голосов
/ 06 ноября 2018

Я пробовал запрос ниже, но по какой-то причине я получаю Unknown server error occurred when processing this request. Я немного новичок в mongodb, но при чтении документации для оболочки Mongodb и CosmosDB все перечисленные операторы поддерживаются, и это выглядит синтаксически правильным.

db.getCollection('transactions').aggregate(
    [
        {
            $match:{
                bdr_date: 20181031, 
                make: { $exists: false }, 
                shard_key: '1249_2018-10', 
                time: { $gt: 2344 }
            }
        },
        {
            $group: { 
                total_sales: { 
                    $sum: { 
                        $multiply: [
                            "$sales",
                            "$units"
                        ]
                    }
                }
            }
        } 
    ]
)

My CosmosDB использует MongoAPI и содержит одну коллекцию с именем transactions с документами, которые имеют много ключей, но вот важные:

{
    "bdr_date" : INT(32),
    "time" : INT(32),
    "sales" : Double,
    "units" : INT(32),
    "shard_key" : String
}

В некоторых документах также есть ключ { "make": INT(32) }, где у нас был скрипт, заполняющий дыры в данных. Мне нужны были только документы с реальными данными, поэтому я отфильтровал документы с помощью клавиши "make". bdr_date в формате yyyymmdd и time в формате HHMM.

Код ошибки на самом деле не говорит ничего другого, кроме исключения ошибки неизвестного сервера, поэтому я довольно озадачен тем, что именно я делаю неправильно. Есть что-то простое, что мне не хватает?

Если вам нужна дополнительная информация, я сделаю все возможное, чтобы удовлетворить. Я ценю помощь!

1 Ответ

0 голосов
/ 07 ноября 2018

После отправки электронного письма на AskCosmosDB@microsoft.com, по-видимому, в будущем будет исправлена ​​ошибка, из-за которой Cosmos возвращает неправильное сообщение об ошибке.

В моем случае все оказалось просто. Я просто забыл поставить ключ _id в оператор $group. В моем случае исправление проблемы _id: null.

db.getCollection('transactions').aggregate(
    [
        {
            $match:{
                bdr_date: 20181031, 
                make: { $exists: false }, 
                shard_key: '1249_2018-10', 
                time: { $gt: 2344 }
            }
        },
        {
            $group: { 
                _id: null,
                total_sales: { 
                    $sum: { 
                        $multiply: [
                            "$sales",
                            "$units"
                        ]
                    }
                }
            }
        } 
    ]
)
...