Столкнулся с задачей, обновить поле "order" во множестве строк в mongoDB, вроде бы все просто, но мне нужно в поле "order" вставить число с шагом по итератору. Но ни где не нашел как в pipeline задать изменяемую переменную чтобы на основе нее построить функцию.
Есть вот такой набор полей:
[
{"_id": "619ff3d26812666d818a5cd6", "sheet": 46, "order": 32, "name": "Row 1"},
{"_id": "619ff3d26812666d818a5cd7", "sheet": 46, "order": 1, "name": "Row 2"},
{"_id": "619ff3d26812666d818a5cd8", "sheet": 46, "order": 23, "name": "Row 3"},
]
Мне нужно сделать update всех этих полей, с match и sort
db.collection.update({"sheet": 46}, {
$sort: {
"name": 1
},
$set: {
"order" : (вот тут мне нужно вставить итератор, который будет увеличиваться на +1 с каждой новой строкой)
}
})
accumulator тут не сработает, т.к. он работает только в group, возможно можно пропустить через $function, но как сохранить значение итератора где-то в переменной, и увеличивать его на +1 каждую строку...
с помощью js и forEach это сделать не проблема, но хотелось бы использовать bson и pipeline для этой операции.
если есть знатоки mongoDB, подскажите что можно сделать...