Оболочка mongodb $ inc конвертирует int в двойной - PullRequest
0 голосов
/ 28 июня 2018

Используя 1 вкладыш для обновления многих записей через $ inc в mongodb через оболочку mongo, я обнаружил, что целочисленное поле, к которому я прикасаюсь, преобразуется в двойное. Я понимаю, что оболочка использует JavaScript, и это причина. Мой вопрос: есть ли способ продолжать использовать 1-строчную для этого обновления путем передачи NumberInt или мне нужно что-то еще? Дано:

{ _id: 1, sku: "abc123", количество: 10, метрики: { Заказы: 2, рейтинг: 3.5 } }

Я тогда попробую 1-лайнер.

db.products.update(
   { sku: "abc123" },
   { $inc: { quantity: -2, "metrics.orders": 1 } }
)

Количество должно быть 8, а не 8.0, а metrics.orders должно быть 3, а не 3.0.

1 Ответ

0 голосов
/ 29 июня 2018

Чтобы сохранить исходный целочисленный тип данных, вам нужно передать значения $inc как NumberInt:

db.products.update(
   { sku: "abc123" },
   { $inc: { quantity: NumberInt(-2), "metrics.orders": NumberInt(1) } }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...