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

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

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

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

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

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