Разнесите строку много раз в многомерный массив

Вы можете попробовать с помощью bulkWrite

const array = ["222", "876", "456", "789"]

db.myCollection.bulkWrite(
  array.map((val) => 
    ({
      updateOne: {
        filter: { _id : obj._id },
        update: { $set: { ["data.field_to_check." + val] : Math.round(obj.data.field_to_check[val]) + ''  }},
      }
    })
  )
)

-2
задан Nick 20 January 2019 в 02:16
поделиться

1 ответ

Это требует зацикливания строк, созданных путем разрыва на новой строке, получения пары ключ / значение путем разрыва на @, отдельных элементов для ключа путем разложения значения на |, а затем окончательных пар ключ / значение. взорвав каждый элемент на :

$var = 'es@set:col-md-8 col-lg-4 col-xl-6|info:f1|but:md
fs@set:col-md-4 col-lg-8 col-xl-6|info:f4|but:md';
$arr = array();
foreach (explode("\n", $var) as $item) {
    list($key, $value) = explode('@', $item);
    foreach (explode('|', $value) as $val) {
        list ($k, $v) = explode(':', $val);
        $arr[$key][$k] = $v;
    };
}
print_r($arr);

Вывод:

Array (
    [es] => Array (
        [set] => col-md-8 col-lg-4 col-xl-6
        [info] => f1
        [but] => md
    )
    [fs] => Array (
        [set] => col-md-4 col-lg-8 col-xl-6
        [info] => f4
        [but] => md
    ) 
)

Демонстрация на 3v4l.org

0
ответ дан Nick 20 January 2019 в 02:16
поделиться
Другие вопросы по тегам:

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