Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Обновление массива в MongoDB / 5 сообщений из 5, страница 1 из 1
09.09.2015, 23:39
    #39047556
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление массива в MongoDB
Подскажите, правильно ли я понимаю.

Есть коллекция 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
10.09.2015, 09:30
    #39047677
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление массива в MongoDB
Подскажите, как скопировать базу данных?
Подключился под MongoAdmin, переключился в свою БД, выполнил db.copyDatabase.
Теперь у меня есть БД test, полностью копирующая основную БД.
Как теперь мне для этой БД задать такие же учетные данные для подключения (root/pwd), как и на основной?
...
Рейтинг: 0 / 0
10.09.2015, 10:24
    #39047748
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление массива в MongoDB
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
10.09.2015, 10:26
    #39047749
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление массива в MongoDB
Да, и почитайте документацию о multiple .
...
Рейтинг: 0 / 0
10.09.2015, 10:30
    #39047753
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновление массива в MongoDB
Alibek B.Подскажите, как скопировать базу данных?
Подключился под MongoAdmin, переключился в свою БД, выполнил db.copyDatabase.
Теперь у меня есть БД test, полностью копирующая основную БД.
Как теперь мне для этой БД задать такие же учетные данные для подключения (root/pwd), как и на основной?версия MongoDB у Вас какая? Начиная с 2.6 пользователи от всех баз хранятся в системной базе admin.

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


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