Как установить метки LiveCharts StackedColumns в правильном порядке

Ваша переменная ids будет построена из «строк», а не ObjectId значений.

Мангустировать «autocasts» строковые значения для ObjectId в их правильный тип в регулярных запросах, но это не происходит в конвейере агрегации , как описано в номере № 1399.

Вместо этого вы должны выполнить правильное литье, чтобы ввести вручную:

ids = ids.map(function(el) { return mongoose.Types.ObjectId(el) })

Затем вы можете использовать их в своем конвейере:

{ "$match": { "_id": { "$in": ids } } }

Причина в том, что конвейеры агрегации «обычно» изменяют структуру документа, и поэтому mongoose не делает никаких предположений о том, что «схема» применяется к документу на любой стадии конвейера.

Можно утверждать, что этап «первого» конвейера, когда это этап $match, должен сделать это, поскольку документ действительно не изменяется. Но сейчас это не так.

Любые значения, которые могут быть «строками» или, по крайней мере, не корректным типом BSON, должны быть вручную отобраны для соответствия.

0
задан Nedo Alaimo 15 January 2019 в 15:39
поделиться

1 ответ

Проблема заключалась в том, что я не добавлял «нулевые» значения в StackedColumnsSeries, поэтому все значения были сжаты слева от диаграммы, а метки - неправильными.

foreach (KeyValuePair<string, AgvChartEntry> agv in unsortedAgvCollection)
{
    foreach (string error in errorsDisplay)
    {
         if (agv.Value.Error.ContainsKey(error))
         {
               stackedColumns[agv.Key].Values.Add(agv.Value.Error[error]);
         } 
         else  
         {
               //Must add the zero value it the entry does not exist
               stackedColumns[agv.Key].Values.Add(0); 
         }                     
    }
}
0
ответ дан Nedo Alaimo 15 January 2019 в 15:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: