powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Обновление массива в MongoDB
5 сообщений из 5, страница 1 из 1
Обновление массива в MongoDB
    #39047556
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, правильно ли я понимаю.

Есть коллекция Docs, в которой хранится несколько документов.
У каждого документа есть поле Items, представляющее собой массив.
Мне нужно изменить значения некоторых элементов Items и переупорядочить массив.
Я делаю примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$col = $db->get_collection('Docs');
$docs = $col->find();
while ($doc = $docs->next) {
  $items = sort {...} grep {...} $doc['Items'];
  push $items, grep {...} $doc['Items'];
  foreach ($item = $items) {
    if (...) {
      $item['field1'] = ...;
    }
  }
  $col->update(['_id'=>$doc['_id']], ['$set'=>['Items'=>$items]], ['multiple'=>1]);
}


Правильно ли сработает последняя строчка?
Мне нужно обновить элементы поля Items, не затрагивая остальных данных.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
Обновление массива в MongoDB
    #39047677
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как скопировать базу данных?
Подключился под MongoAdmin, переключился в свою БД, выполнил db.copyDatabase.
Теперь у меня есть БД test, полностью копирующая основную БД.
Как теперь мне для этой БД задать такие же учетные данные для подключения (root/pwd), как и на основной?
...
Рейтинг: 0 / 0
Обновление массива в MongoDB
    #39047748
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Подскажите, правильно ли я понимаю.

Есть коллекция Docs, в которой хранится несколько документов.
У каждого документа есть поле Items, представляющее собой массив.
Мне нужно изменить значения некоторых элементов Items и переупорядочить массив.
Я делаю примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$col = $db->get_collection('Docs');
$docs = $col->find();
while ($doc = $docs->next) {
  $items = sort {...} grep {...} $doc['Items'];
  push $items, grep {...} $doc['Items'];
  foreach ($item = $items) {
    if (...) {
      $item['field1'] = ...;
    }
  }
  $col->update(['_id'=>$doc['_id']], ['$set'=>['Items'=>$items]], ['multiple'=>1]);
}


Правильно ли сработает последняя строчка?
Мне нужно обновить элементы поля Items, не затрагивая остальных данных.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.$set не нужен.

Вы получили документ $doc, изменили его и сохранили полностью: $col->save($doc)
...
Рейтинг: 0 / 0
Обновление массива в MongoDB
    #39047749
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и почитайте документацию о multiple .
...
Рейтинг: 0 / 0
Обновление массива в MongoDB
    #39047753
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Подскажите, как скопировать базу данных?
Подключился под MongoAdmin, переключился в свою БД, выполнил db.copyDatabase.
Теперь у меня есть БД test, полностью копирующая основную БД.
Как теперь мне для этой БД задать такие же учетные данные для подключения (root/pwd), как и на основной?версия MongoDB у Вас какая? Начиная с 2.6 пользователи от всех баз хранятся в системной базе admin.

Используйте mongodump/mongorestore.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Обновление массива в MongoDB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]