【发布时间】:2012-12-20 08:27:55
【问题描述】:
我正在尝试在用户的文档中缓存来自社交媒体的朋友,但在存储/取回他们时遇到问题。 首先,我盲目地剥离了他们的朋友缓存,并用我新获取的数据填充它,但通过它我发现嵌入的文档在所有用户中必须是唯一的(我有几个相同的朋友在我的测试帐户中,我得到:
{"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]
};
【问题讨论】:
标签: javascript mongodb mongoose