按子集合搜索mongoDB

bis0qfac  于 2023-02-21  发布在  Go
关注(0)|答案(1)|浏览(150)

质询

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_idemail和一个子集合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.I.e.用户友好状态。
这就是问题发生的地方。如果podskazhesh将primnogo感激。

icnyk63a

icnyk63a1#

好消息是可能有一个更好的查询。

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

如果这行得通,那么1606是1603的朋友。

边注

MongoDB不支持“子集合”的概念。database包含collectionscollections包含documents。这里没有“子集合”的概念。
在你的例子中,你有一个document,它包含一个array类型的value,但是MongoDB没有任何类型的连接语法,所以它只是一个“引用数组”,而不是一个真正的“子集合”,这里没有引用完整性。

相关问题