MongoDB 为 Parse Server 应用程序建立索引
MongoDB indexing for a Parse Server application
我们有一个社交应用程序,用户可以在其中互相聊天,我们已经收到了 35 万条消息!
我们最近注意到随着消息数量的增加,find
操作变得越来越慢!我认为这里的问题是 Message
集合未编入索引。
这就是我现在想做的!我在 MongoDB 文档中找到了这段代码:
db.comments.ensure_index(('discussion_id', 1))
这是我的留言集:
{
chatRoom: <Pointer>,
user: <Pointer>,
text: <String>,
isSeen: <Bool>
}
所以我想这就是我所要做的:
db.Message.ensure_index(('chatRoom', 1))
仅此而已吗? 运行 这个命令和我都准备好了吗?之后所有现有和未来的消息都会被编入索引?
你的索引实际上应该取决于你的查询是什么样的。假设您的消息查询如下所示:
var query = new Parse.Query("Message");
query.equalTo("chatRoom", aChatRoom);
query.equalTo("user", someUser);
query.equalTo("isSeen", false);
query.descending("createdAt");
query.find().then(function(results){//whatever});
然后您需要专门为该查询在 Message 集合上建立索引。在这种情况下:
db.Message.createIndex({_p_chatRoom:1, _p_user:1, isSeen: -1, _created_at: -1})
或者,只有聊天室的索引比没有索引要好得多
db.Message.createIndex({_p_chatRoom:1})
要真正了解要构建哪些索引,您需要阅读 Mongo 文档 https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex
我个人将 MLab 用于我的 Parse MongoDB,因为我对数据库不是很了解,而且他们实际上有一个慢速查询分析器,可以根据您的应用程序中的常见查询推荐索引,所以如果如果您不想学习 MongoDB 索引的细节,那么 MLab 是一个很好的起点
我们有一个社交应用程序,用户可以在其中互相聊天,我们已经收到了 35 万条消息!
我们最近注意到随着消息数量的增加,find
操作变得越来越慢!我认为这里的问题是 Message
集合未编入索引。
这就是我现在想做的!我在 MongoDB 文档中找到了这段代码:
db.comments.ensure_index(('discussion_id', 1))
这是我的留言集:
{
chatRoom: <Pointer>,
user: <Pointer>,
text: <String>,
isSeen: <Bool>
}
所以我想这就是我所要做的:
db.Message.ensure_index(('chatRoom', 1))
仅此而已吗? 运行 这个命令和我都准备好了吗?之后所有现有和未来的消息都会被编入索引?
你的索引实际上应该取决于你的查询是什么样的。假设您的消息查询如下所示:
var query = new Parse.Query("Message");
query.equalTo("chatRoom", aChatRoom);
query.equalTo("user", someUser);
query.equalTo("isSeen", false);
query.descending("createdAt");
query.find().then(function(results){//whatever});
然后您需要专门为该查询在 Message 集合上建立索引。在这种情况下:
db.Message.createIndex({_p_chatRoom:1, _p_user:1, isSeen: -1, _created_at: -1})
或者,只有聊天室的索引比没有索引要好得多
db.Message.createIndex({_p_chatRoom:1})
要真正了解要构建哪些索引,您需要阅读 Mongo 文档 https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex
我个人将 MLab 用于我的 Parse MongoDB,因为我对数据库不是很了解,而且他们实际上有一个慢速查询分析器,可以根据您的应用程序中的常见查询推荐索引,所以如果如果您不想学习 MongoDB 索引的细节,那么 MLab 是一个很好的起点