我目前有一个mongodb数据库,它是非常非结构化的。我正在尝试提取twitter上一组给定个人资料的所有追随者。我的数据库如下所示:
{'123':1
'123':2
'123':3
'567':8
'567':9
}其中每个键是用户,值是单个跟随者。当我试图在这些键上创建索引时,由于我有很多用户(800万),所以我完全用完了可用的索引。在谷歌搜索之后,我发现我可以拥有的索引的最大数量大约是64。如何在此数据库上创建正确的索引?或者你能为我推荐一种不同的存储数据的方式吗?
发布于 2012-09-13 04:22:58
你应该以不同的方式组织你的数据。
我建议你有一个“用户”文档的集合,其中每个用户都有一个“追随者”数组。此数组应填充后续用户的唯一标识符(如name、_id或您自己的ID号)。
{ name: "userA",
followers: [
"userB",
"userC"
]
},
{ name: "userB",
followers: [
"userD",
"userF"
]
},然后,您可以在followers字段上创建索引,以便快速查找关注其他用户的所有用户。当您想要查找跟随用户"userX“、"userY”和"userZ“的所有用户时,您可以使用以下查询来执行此操作:
db.users.find({followers: { $all: ["userX", "userY", "userZ" ] } });编辑:
要向用户添加关注者,请使用$push运算符:
db.users.update({name:"userA"}, { $push: { followers: "userB" } } );$pull运算符可用于删除数组项:
db.users.update({name:"userA"}, { $pull: { followers: "userB" } } );https://stackoverflow.com/questions/12395436
复制相似问题