gpt4 book ai didi

Parse Server 应用程序的 MongoDB 索引

转载 作者:行者123 更新时间:2023-12-03 01:49:13 24 4
gpt4 key购买 nike

我们有一款社交应用,用户可以在其中互相聊天,我们的消息数量已达到 35 万条!

我们最近注意到,随着消息数量的增加,查找操作变得越来越慢!我认为这里的问题是 Message 集合未建立索引。

这就是我现在想做的!我在 MongoDB 文档中找到了这段代码:

db.comments.ensure_index(('discussion_id', 1))

这是我的消息集合:

{
chatRoom: <Pointer>,
user: <Pointer>,
text: <String>,
isSeen: <Bool>
}

所以我想这就是我所要做的:

db.Message.ensure_index(('chatRoom', 1))

仅此而已吗?运行这个命令,我就准备好了?之后所有现有和 future 的消息都会被索引吗?

最佳答案

您的索引实际上应该取决于您的查询。假设您的消息查询如下所示:

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 是一个很好的起点

关于Parse Server 应用程序的 MongoDB 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com