Невозможно использовать агрегирующие операторы в MongoDB (storageEngine = mmapv1) - PullRequest
0 голосов
/ 17 октября 2019

Я получаю следующую ошибку при использовании оператора $convert, mongodb storageEngine равен mmapv1.

db.persons.aggregate([
  {
    $project: {
      registred: { $convert: { input: "registered.age", to: "double" } }
    }
  }
]);

Ошибка: команда не выполнена: {"ok":0, "errmsg": "недопустимый оператор '$ convert'", "code": 15999}

1 Ответ

0 голосов
/ 17 октября 2019

Оператор $ convert доступен только для версий MongoDB> = 4.0.

Тем не менее, у вас есть два варианта:

1- Обновление MongoDB

2- Преобразование значения в результат агрегации. В Javascript вы можете сделать следующее:

var result = db.persons.aggregate([
    {
        $project:{
            registred:{
                $convert:{input:"registered.age",to:"double"}
            }
        }
    }
]);

result.forEach(
    function(document) {
        document.registred.age = parseFloat(document.registred.age);
    }
);
...