按子集搜索mongoDB

时间:2011-08-01 06:11:38

标签: mongodb

查询:db.user.save({'user_id':1603,'email':'test@test.com','rel':[{'fid':1604,'s':0},{ 'FID':1605, 'S':1},{ 'FID':1606, 'S':2}]}) 创建USER的集合,为她写一个具有user_id,电子邮件和子集合REL的用户。 在子集合内部是一对REL FID(朋友ID)和S(友谊状态。例如0 - 发送的朋友请求.1 - 朋友2. - 拒绝友谊,......)。 换句话说,子集合REL用户ID 1603是关于他如何与谁友好以及友谊状态的信息。

问题。有一个ID为1606的用户。我们需要找出它处理用户ID 1603的内容。

要执行此操作,首先要找到ID为1603的用户,然后将其设置为REL db.user.findOne({'user_id':1603},{'rel':true})

在REL的子集合中搜索FID c值1606,找到ID为1603的用户。 如果找到这样的FID,则在1606和1603中返回S.Ie用户友好状态。

这是问题发生的地方。如果podskazhesh将primnogo感激。

1 个答案:

答案 0 :(得分:2)

好消息可能有更好的查询。

db.user.findOne({'user_id': 1603}, {'rel.fid': 1606})

如果有效,那么1606就是1603的朋友。

旁注

MongoDB不支持“子集合”的概念。 database包含collections,其中包含documents。那里没有“子集”的概念。

在您的情况下,您的document包含value类型的array。但是MongoDB没有任何类型的连接语法。所以它只是一个“参考数组”,它不是真正的“子集合”,这里没有参照完整性。