有没有办法在Meteor的服务器端JavaScript代码中删除Mongo数据库集合?(真正删除整个内容,而不仅仅是
此外,在Meteor的服务器端JavaScript代码中有没有一种方法可以删除Meteor.Collection而不删除相应的数据库集合?
为什么要这样做呢?
- 使用underscore或类似方法搜索子文档(用户文档的子文档,例如
所以我想为每个用户都有一个数据库,以便将其用作邮箱,然后一个消息的最大大小为16 MB(非常可接受),并且我可以使用mongo查询来搜索邮箱。
此外,由于我正在使用Meteor,因此很好的方式是,在用户登录时将此mongo db集合加载为Meteor.Collection。当用户停用帐户时,db应该被删除,如果用户仅注销,则应仅删除Meteor.Collection(并在再次登录时恢复)。
在某种程度上,我已经将这个东西做好了,每个用户都有自己的邮箱数据库,但是如果有人取消帐户,我必须手动删除该特定的Mongo Collection。此外,我必须始终保持所有mongo db集合处于活动状态,因为我无法删除它们。
以下是一个适用于每个用户邮件箱的良好工作的服务器端代码片段:
当客户端使用以下客户端代码提出某个查询时:
如果客户端操作会话变量"mailboxFilter",则订阅将被更新,并且用户可以在minimongo中获得一组新的消息。
它的工作非常好,唯一缺少的是数据库集合搜索。
感谢任何提示!
*我之前在这里写了"dropping",这是一个完全错误的说法。我想说的是搜索。
Meteor.Collection.remove({});
“它的内容”)此外,在Meteor的服务器端JavaScript代码中有没有一种方法可以删除Meteor.Collection而不删除相应的数据库集合?
为什么要这样做呢?
- 使用underscore或类似方法搜索子文档(用户文档的子文档,例如
userdoc.mailbox[12345]
)会变得非常缓慢(例如对于大型邮箱)。
- 另一方面,将所有用户的所有消息(在邮箱示例的上下文中)放入一个大型数据库中,然后搜索*所有消息以查找一个或多个特定消息,结果也非常缓慢(对于具有大型邮箱的许多用户)。
- 还存在Mongo文档的大小限制,因此如果我将用户的所有消息存储在他/她的用户文档中,则邮箱的最大大小为<16 MB,包括所有其他用户数据。所以我想为每个用户都有一个数据库,以便将其用作邮箱,然后一个消息的最大大小为16 MB(非常可接受),并且我可以使用mongo查询来搜索邮箱。
此外,由于我正在使用Meteor,因此很好的方式是,在用户登录时将此mongo db集合加载为Meteor.Collection。当用户停用帐户时,db应该被删除,如果用户仅注销,则应仅删除Meteor.Collection(并在再次登录时恢复)。
在某种程度上,我已经将这个东西做好了,每个用户都有自己的邮箱数据库,但是如果有人取消帐户,我必须手动删除该特定的Mongo Collection。此外,我必须始终保持所有mongo db集合处于活动状态,因为我无法删除它们。
以下是一个适用于每个用户邮件箱的良好工作的服务器端代码片段:
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",则订阅将被更新,并且用户可以在minimongo中获得一组新的消息。
它的工作非常好,唯一缺少的是数据库集合搜索。
感谢任何提示!
*我之前在这里写了"dropping",这是一个完全错误的说法。我想说的是搜索。