Запрос обновления MongoDB, в котором имя поля содержит точку (точку)

Поэтому, прежде чем задать вопрос, который я хочу сказать, я знаю, что Mongo не допускает точку, то есть точку (.) В имени поля.

Удивительным моментом является то, что PHP смог вставить данные в монго с точкой в ​​нем в качестве имени поля в многомерном массиве. Я использую PHP версии 5.4 Mongo Driver 1.4.

Итак, структура массива примерно такая:

Array(
["field1"] => "value",
["field2"] => "123",
["field3"] => array( ["abc.def"] => array( ["test"] => "value" )
);

Чего я хочу добиться, так это изменить значение field2 со строки на целое число.

Его огромные данные и приложение зависят от него, мне нужно обновить тип с строки на целое или с целого на строку, я могу контролировать, какое приложение вставляется в будущем, но то, что было введено, не может быть изменено. Пожалуйста, дайте мне обходной путь для того же,

В больших надеждах кто-то взломает идею об этом..!!;)

1 ответ

Решение

Лучший обходной путь, который я смог найти, - это использовать db.collection.update(); хотя мне пришлось пройти через длинную процедуру Excel и сделать похожие запросы для каждой строки, после чего я понял, что мог бы использовать db.collection.find().forEach();

Таким образом, чтобы сократить решение, используйте forEach для итерации и выполнения db.collection.update () с условием, соответствующим данным и полю для обновления. Я отформатировал запрос как строку, а затем использовал eval();

Если вы нашли более короткий путь, пожалуйста, дайте мне знать..!!

Другие вопросы по тегам