2012-04-21 3 views
1

В верхней части файла я могу поставить что-то вроде ...Можете ли вы сохранить ссылку на коллекцию монго?

var collection = db.mongo.collection('test', function(err, collection){return collection});

, а затем в любом из файлов функция использует collection.find() и т.д.

Я думаю, мой вопрос ... это collection ссылку на сбор или копию данных?

Если данные в изменениях коллекции будут ли я получать последние данные, запросив переменную collection?

Спасибо!

ответ

0

Коллекция является ссылкой для объекта коллекции. Пока вы не выберете find (или findOne), у вас нет реальных данных в ваших руках. И даже тогда он возвращает объект Cursor, оставляя объект коллекции всегда нетронутым.

Хранение как коллекций, так и курсоров не будет хранить ваши данные. помните, что вы можете иметь дело с миллионами записей. работа с данными сама по себе может быть огромной для памяти сервера. Вместо этого mongo возвращает курсоры и ссылки для фильтрации. В PHP у вас есть функция, называемая iterator_to_array, которую вы можете передать ей курсором, и она преобразуется в массив данных. В javascript я не знаю, есть ли такие функции. Но я думаю, что не имеет смысла быть такими функциями. Отфильтруйте информацию до тех пор, пока не получите управляемый размер данных, затем переместите курсор и сделайте свою работу. Если у вас есть что-то вроде массива config или такого типа, в нескольких документах, попробуйте сохранить все на одном и получить его с помощью функции findOne().

Но, в конце концов, я думаю, это просто вопрос дизайна, можно ли ваши данные фильтровать или нет.

+0

Вопросы касаются больше, если я должен хранить ссылку на подборку в переменной или я должен ее открывать каждый раз с таким же шаблоном: 'db.mongo.collection ('test', function (err, collection) {collection.find()}); 'это может быть больше вопросов узла, так как im не уверен, что вещи ведут себя одинаково с синхронизацией php i/o – fancy

+0

О, я вижу. Поскольку это всего лишь указатель, вы можете сохранить его на var для удобства. Это вопрос узла. Предполагая, что приложение будет работать много времени (а не как скрипт php, который начинается и заканчивается) Если вы используете коллекцию много, вы можете сохранить ее на var. Если вы выполняете два последовательных запроса и изменяете данные между ними, вы получите два разных набора результатов (или курсор, указывающий на разные результирующие объекты). –

Смежные вопросы