首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mogodb中添加索引

在mogodb中添加索引
EN

Stack Overflow用户
提问于 2012-09-13 04:01:02
回答 1查看 76关注 0票数 0

我目前有一个mongodb数据库,它是非常非结构化的。我正在尝试提取twitter上一组给定个人资料的所有追随者。我的数据库如下所示:

代码语言:javascript
复制
{'123':1
 '123':2
 '123':3
 '567':8
 '567':9
}

其中每个键是用户,值是单个跟随者。当我试图在这些键上创建索引时,由于我有很多用户(800万),所以我完全用完了可用的索引。在谷歌搜索之后,我发现我可以拥有的索引的最大数量大约是64。如何在此数据库上创建正确的索引?或者你能为我推荐一种不同的存储数据的方式吗?

EN

回答 1

Stack Overflow用户

发布于 2012-09-13 04:22:58

你应该以不同的方式组织你的数据。

我建议你有一个“用户”文档的集合,其中每个用户都有一个“追随者”数组。此数组应填充后续用户的唯一标识符(如name、_id或您自己的ID号)。

代码语言:javascript
复制
{ name: "userA",
  followers: [
     "userB",
     "userC"
  ] 
},
{ name: "userB",
  followers: [
     "userD",
     "userF"
 ] 
},

然后,您可以在followers字段上创建索引,以便快速查找关注其他用户的所有用户。当您想要查找跟随用户"userX“、"userY”和"userZ“的所有用户时,您可以使用以下查询来执行此操作:

代码语言:javascript
复制
db.users.find({followers: { $all: ["userX", "userY", "userZ" ] } });

编辑:

要向用户添加关注者,请使用$push运算符:

代码语言:javascript
复制
db.users.update({name:"userA"}, { $push: { followers: "userB" } } );

$pull运算符可用于删除数组项:

代码语言:javascript
复制
db.users.update({name:"userA"}, { $pull: { followers: "userB" } } );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12395436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档