0

我试图限制每个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
   },
  ]
]

我使用正确的方法吗?

4

1 回答 1

1

这行得通,但会很慢。user_id如果你在字段上创建索引,你可以filter用which 替换r.table('friends').getAll(userId, {index: 'user_id'})它会快得多。

于 2016-09-10T06:58:55.303 回答