rethinkdb获取不在其他文档中的所有记录

时间:2016-08-23 06:46:21

标签: node.js rethinkdb

我们将rethinkdb与nodejs一起使用。我有一个用户表,我想得到所有isActive用户不在userdetail表

用户表

{
"id":  "1" ,
"fName":  "A" ,
"lName":  "B" ,
"isActive": true
}
{
 "id":  "2" ,
"fName":  "C" ,
"lName":  "D" ,
"isActive": true
}
{
"id":  "3" ,
"fName":  "E" ,
"lName":  "F" ,
"isActive": true
}
{
"id":  "4" ,
"fName":  "G" ,
"lName":  "H" ,
"isActive": false
 }
 {
 "id":  "5" ,
 "fName":  "I" ,
 "lName":  "J" ,
 "isActive": true
  }

为userDetails

{
"id":  "12" ,
"users":  [{"userId":"1"},{"userId":"2"}]
}

现在我想要所有isActive用户,除了id为1和2

所以我试过以下查询,但它不能正常工作

r.db("mydb").table("users").filter( function(u) 
{ return r.db("mydb").
 table("userdetails")("userId").contains( u("id")         
 ).not(); })

1 个答案:

答案 0 :(得分:2)

这似乎是你想要的

r.table('userdetails')('users').concatMap(r.row('userId')).coerceTo('ARRAY').do(
   function(userdetails) {
    return r.table('user').filter(function(user) {
      return user('isActive').and(userdetails.contains(user('id')).not())
   })
})

虽然它可能表现不佳