我正在尝试在用户的文档中缓存来自社交媒体的朋友,并且在存储/取回他们时遇到问题。首先,我盲目地剥离了他们的朋友缓存,并用我新获取的数据填充它,但通过它我发现嵌入的文档在所有用户中必须是唯一的(我有几个相同的朋友在我的测试帐户中,我得到:
{"name":"MongoError","err":"E11000 duplicate key error index: test-dev.users.$friends.outsideID_1 dup key: { : \"1205314313242\" }","code":11001,"n":0,"connectionId":274,"ok":1}
所以从这里我知道,因为该嵌入式文档存在于我的另一个已经注册和更新的帐户中,它无法创建该文档(outsideID 是索引,因为我计划稍后使用它进行搜索))所以我开始尝试 OutsideFriend.find( {'outsideID':{$in:friendsIDs}}(其中 friendsIDs 是我从 SM 查询中获得的 id 的数组)等等。然后在回调中我尝试添加新朋友并添加现有文档给有问题的用户,这样它就不会试图在系统中复制它。但是,无论出于何种原因,OutsideFrind.find() 永远不会返回任何文档......这让我认为嵌入式文档不是集中的.. . 但是为什么第一次尝试会失败?
我该怎么做?(下面的架构,如果您需要任何其他信息,请告诉我!)
当前架构:
//External friend model
var OutsideFriend = new Schema({
outsideID:{type:String, index:true, unique:true}
,username:String
,location:String
,avatarURL:String
});
//User model
var User = new Schema({
avatarURL:String
,mySMID:String
//Social Media info
,smID:{type:String, index:true, unique:true}
,tok:String
,tokSec:String
,friends:[OutsideFriend]
};