Как передавать данные из mongodb?

Монго find(), верните все документы в коллекции. Я хочу сохранить каждый документ, который у меня есть в моем mongodb, в другой базе данных. Итак, я хочу продолжать опрашивать mongodb для одного нового документа, потому что find().limit(1) будет возвращать мне одно и то же снова и снова. Я просто хочу, чтобы монго вернулся, весь документ один за другим. Является ли это возможным? Как это может быть сделано?

Изменить: я хочу просто скопировать каждую запись в моем экземпляре mongodb в другую базу данных, а не только в последние.


person extraDarker    schedule 06.10.2014    source источник
comment
Чтобы убедиться, что я вас правильно понял: вы хотите каким-то образом отслеживать вашу базу данных MongoDB в режиме реального времени и реплицировать каждый вновь вставленный документ в другую базу данных?   -  person Philipp    schedule 06.10.2014
comment
Нет, я хочу просто скопировать каждую запись в моем экземпляре mongodb в другую базу данных, а не только самые последние.   -  person extraDarker    schedule 06.10.2014
comment
Вы можете использовать команду db.copyDatabase для начальной копии.   -  person Philipp    schedule 06.10.2014
comment
Также есть mongodump и mongoexport   -  person willis    schedule 03.07.2019


Ответы (2)


  1. Используйте sort , по умолчанию это естественная сортировка, т.е.:

    найти (). Сортировать ({_id:-1}). Лимит (1)

Вам нужно будет сохранить _id текущего полученного документа и сопоставить его со следующим, полученным с тем же запросом, если они разные, вы сохраните документ, а также новый _id.

  1. Лучше использовать хвостовой курсор: http://docs.mongodb.org/manual/tutorial/create-tailable-cursor/
person DhruvPathak    schedule 06.10.2014

Похоже, что в комментарии Филиппа есть ответ, который вы ищете, но чтобы ответить на исходный вопрос:

Я бы не советовал использовать сортировку для всей базы данных, если вы ожидаете, что размеры ваших документов будут довольно большими, также ограничение приведет к ужасной производительности.

Запуск операции find() на самом деле возвращает вам объект курсора, который вы можете повторять, который эффективно работает в потоковом режиме и, следовательно, именно то, что вы просите.

person AllHailMegatron    schedule 03.07.2019