你應該以不同的方式構造你的數據。
我會建議你有一個「用戶」文件的集合,其中每個用戶都有一個數組「追隨者」。這個數組應該填充關注用戶的唯一標識符(如姓名,_id或您自己的ID號碼)。
{ name: "userA",
followers: [
"userB",
"userC"
]
},
{ name: "userB",
followers: [
"userD",
"userF"
]
},
然後,您可以在followers字段上創建索引,以快速找到所有跟隨其他用戶的用戶。當你想找到誰遵循用戶「用戶X」,「userY」和「userZ」的所有用戶,那麼您需要與此查詢做到這一點:
db.users.find({followers: { $all: ["userX", "userY", "userZ" ] } });
編輯:
添加跟隨器給用戶,使用$推操作者:
db.users.update({name:"userA"}, { $push: { followers: "userB" } });
的$拉操作者可以被用來去除陣列enries:
db.users.update({name:"userA"}, { $pull: { followers: "userB" } });
每個集合可以有64個不同的索引_definitions_;我知道這些索引可以支持的文檔數量沒有限制。 – JohnnyHK
我所有的800萬條目都在一個集合中。在我上面的例子中,我將需要2個索引。一個索引鍵123,另一個索引567.我有近3000個這樣的唯一鍵。 – Amitash
好吧,聽起來像索引你當前的模式是不可行的,你需要考慮修改你的模式,以便你的'123','567'等鍵變成共同的值而不是。 – JohnnyHK