-1

我有两个这样的文件:

//school       
{
     Name:""       
     Major:"",
     EnrollYear:1983
}


//schools
{
  id: "user/0",
  ownerId:""
  //an array that contains schools
  schools: [ 
              {
                 Name:""       
                 Major:"",
                 EnrollYear:1983
               }
               .....
           ]
}

如何以学校数组为条件查询ownerIds?

例如:如果我想获取B年在A学校,或者D年在C学校......(或更多)的学生的ownerIds,那么我的查询条件可能是这样的:

condition: [
              {
                  Name:"A"       
                  ....
                  EnrollYear:B
               },
               {
                  Name:"C"       
                 ...
                  EnrollYear:D
               }
           ]
4

2 回答 2

1

rethinkdb 邮件列表中的人给出了正确答案:

r.table('schools').filter(function(row){
  return row('schools').pluck('name', 'enrollyear').contains(function(school){
    return CONDITION.pluck('name', 'enrollyear').contains(school);
 })
})
于 2014-05-02T15:24:51.743 回答
0

您可以像这样构建查询

r.table("users").filter(function(user) {
    return user("schools").contains(function(school) { 
        return school("Name").eq(A).and("school("EnrollYear").eq(B)
    }).and(
        user("schools").contains(function(school) { 
            return school("Name").eq(C).and("school("EnrollYear").eq(D)
        })
    )
})

此外,在您的情况下,您在用户和学校之间存在“多对多”关系。在这种情况下,最好创建第三个表“链接”来保存用户和学校之间的关系。这将使事情更容易查询。

于 2014-04-23T16:08:49.433 回答