Запрос, вызывающий массив вместо типа «объект»

#mongodb #studio3t

Вопрос:

Я не уверен, почему следующий запрос перестал работать. В основном у нас есть местоположение слушателя и местоположение в прошлом, и, похоже, наше местоположение в прошлом не хочет обновляться.

 BSON field 'update.updates.u' is the wrong type 'array', expected type 'object'",
 

Запрос, который я выполняю, таков:

 db.getCollection("pastlistenerslocation").updateMany(
  { "location.coordinates": { $exists: true } },
  [{
    $set: {
      "location.coordinates": [
        { 
          $toDouble: {
            $arrayElemAt: ["$location.coordinates", 0]
          }
        },
        { 
          $toDouble: {
            $arrayElemAt: ["$location.coordinates", 1]
          }
        }
      ]
    }
  }]
)
 

Мои данные выглядят так

 { 
    "_id" : ObjectId("60b5f1fe0948ad2d50428b48"), 
    "location" : {
        "coordinates" : [
            "115.88027251449634", 
            "-31.925607553334974"
        ]
    }, 
    "timestamp" : ISODate("2021-06-01T08:38:21.212 0000")
}
 

Я использую Mongodb версии 4.0.3.

Комментарии:

1. Для обновлений с конвейером агрегации требуется MongoDB версии 4.2 или более поздней версии.

2. @prasad_ Только что обновился до версии 5.0.2 и снова запустил запрос.

Ответ №1:

Вторым аргументом updateMany является массив: MongoDB ожидает, что он будет объектом.