Обновить список документов на mongo с помощью php

Я уже посмотрел на стек и не нашел той же проблемы, что и у меня:

У меня две коллекции: 1) пользователи и 2) данные.

пользователи:

{
  _id: "1234",
  name: "John"
}

и данные:

{
  "userId":"1234",
  "data": {
    {...}
}

Теперь я читаю все документы с «данными» и обновляю коллекцию пользователей для каждого пользователя, чтобы добавить данные (и выполнить больше операций). Это цикл, в котором для каждых данных я выполняю findOne () для идентификатора пользователя, изменяю возвращаемый массив.

Затем я сохраняю новый массив в коллекции пользователей.

Я бы хотел меньше звонить в Mongodb. Я предполагал добавить каждый новый массив «пользователей» в массив и в конце моего сценария, чтобы отправить этот массив пользователей в Mongo. Но я не знаю, как ему сказать: «Для каждого массива в этом массиве обновите коллекцию».

Ты хоть представляешь, как это сделать? Или, может быть, лучший способ достичь того же результата?

Я уже смотрел на такой вопрос, как Как самостоятельно обновить миллионы документов ? PHP + Mongo, но модификация только увеличивает и объединяет, не как у меня, где я хочу добавить много данных.


person Constantin Guay    schedule 10.08.2014    source источник


Ответы (1)


Предполагая, что вы используете MongoDB 2.6+ и версию драйвера MongoDB PHP новее, чем 1.5.0, вы можете воспользоваться API массовой записи через MongoInsertBatch < / a> и MongoUpdateBatch в драйвере PHP.

Версии MongoDB старше 2.6 поддерживают более ограниченный API пакетной вставки (доступный в драйвере PHP через MongoCollection::batchInsert() ).

Общая стратегия с массовыми / пакетными вставками заключается в сокращении времени прохождения сети в оба конца за счет отправки нескольких запросов в пакете, а не по отдельности.

person Stennie    schedule 11.08.2014
comment
Большое спасибо, это то, что мне было нужно. Чтобы завершить ответ: mongowritebatch.add - person Constantin Guay; 11.08.2014