#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 ожидает, что он будет объектом.