Запрос обновления 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();
Если вы нашли более короткий путь, пожалуйста, дайте мне знать..!!