-1

次のような 2 つのドキュメントがあります。

//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)
        })
    )
})

また、あなたの場合、ユーザーと学校の間に「多対多」の関係があります。この場合、ユーザーと学校の間の関係を保存する 3 番目のテーブル「リンク」を作成することをお勧めします。これにより、クエリがはるかに簡単になります。

于 2014-04-23T16:08:49.433 に答える