Удаление коллекции базы данных Mongo в Метеоре

Есть ли способ вывести коллекцию базы данных Mongo из кода JavaScript на стороне сервера с помощью Meteor? (действительно бросить все это, а не толькоMeteor.Collection.remove({}); Это'содержание)

Кроме того, есть ли способ удалить Meteor.Collection из кода JavaScript на стороне сервера, не удаляя соответствующую коллекцию базы данных?

Зачем это делать?

Поиск во вложенных документах (вложенных документах пользователя, например,userdoc.mailbox[12345]) с подчеркиванием или чем-то подобным получается довольно медленно (например, для больших почтовых ящиков).С другой стороны, размещение всех сообщений (в контексте примера почтового ящика) всех пользователей в одной большой БД и последующий поиск * всех сообщений по одному или нескольким конкретным сообщениям оказывается очень, очень медленным (для многих пользователей с большими почтовые ящики) тоже.Существует также ограничение на размер документов Mongo, поэтому, если я сохраню все сообщения пользователя в его / ее пользовательском документе, в почтовом ящике 'максимальный размер s < 16 МБ вместе со всеми другими пользовательскими данными.

Поэтому я хочу иметь базу данных для каждого моего пользователя, чтобы использовать ее в качестве почтового ящика, тогда максимальный размер одного сообщения составляет 16 МБ (очень приемлемо), и я могу искать почтовый ящик с помощью запросов Монго.

Кроме того, так как яИспользуя Meteor, было бы хорошо, если бы эта коллекция моно-БД была загружена как Meteor.Collection при каждом входе пользователя в систему. Когда пользователь деактивирует свою учетную запись, БД, конечно, следует удалить, если пользователь просто выходит из системы. , только Meteor.Collection должен быть удален (и восстановлен, когда он / она снова входит в систему).

В какой-то степени я уже заработал, у каждого пользователя есть собственная база данных для почтового ящика, но если кто-нибудь отменит его / ее учетную запись, я должен удалить эту конкретную коллекцию Mongo вручную. Кроме того, я всегда поддерживаю все коллекции dong Монго в качестве Meteor.Collections, потому что я не могу их отбросить.

Это хорошо работающий фрагмент кода на стороне сервера для почтовых ящиков по одной коллекции на пользователя:

var mailboxes = {};

Meteor.users.find({}, {fields: {_id: 1}}).forEach(function(user) {
    mailboxes[user._id] = new Meteor.Collection("Mailbox_" + user._id);
});

Meteor.publish("myMailbox", function(_query,_options) {
    if (this.userId) {
        return mailboxes[this.userId].find(_query, _options);
    };
});

в то время как клиент просто подписывается определенным запросом с помощью этого фрагмента кода клиента:

myMailbox = new Meteor.Collection("Mailbox_"+Meteor.userId());
Deps.autorun(function(){
    var filter=Session.get("mailboxFilter");
    if(_.isObject(filter) && filter.query && filter.options)
        Meteor.subscribe("myMailbox",filter.query,filter.options);
});

Так что, если клиент манипулирует переменной сеансаmailboxFilter», подписка обновляется, и пользователь получает новую группу сообщений в минимонго.

Это работает очень хорошо, единственное, чего не хватает, это отбрасывание коллекции БД.

Спасибо за любой намек уже!

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

Ответы на вопрос(3)

Ваш ответ на вопрос