Задать вопрос
DieZeeL
@DieZeeL
PHP Developer, DevOps

Как добавить счетчик в pipeline MongoDB?

Столкнулся с задачей, обновить поле "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, подскажите что можно сделать...
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Сложный 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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