我试图限制每个user_id
字段的结果。
例如,我有一个用户ID列表,我希望从2 friends
选择集中限制friends
每个用户。
表:用户
{
name: String,
surname: String
}
表:朋友
{
user_id: ObjectId // refer to user
friend_id: ObjectId // refer to user
}
查询
我可以写的最接近的查询是:
var userIds = [1,2];
r.map(userIds, function(userId) {
return r.table('friends').filter(function(friend) {
return userId.eq(friend('user_id'));
}).limit(2).coerceTo('array');
});
结果:
[
[
{
user_id: 1,
friend_id: 2
},
{
user_id: 1,
friend_id: 3
},
],
[
{
user_id: 2,
friend_id: 3
},
{
user_id: 2,
friend_id: 4
},
]
]
我正在使用正确的方法吗?
答案 0 :(得分:1)
虽然有效,但会很慢。如果您在user_id
字段上创建索引,则可以将filter
替换为r.table('friends').getAll(userId, {index: 'user_id'})
,这将更快。