2017-10-07 6 views
0

Je veux obtenir l'ID des enregistrements de table qui ont le match de tableau avec d'autres enregistrement de l'exemple du tableau de la même table:obtenir des enregistrements faisant un match entre les tableaux rethinkdb

il est record de l'utilisateur « 1 »

✔ r.db('fotogena').table('users').filter({user:'1'}).pluck('pleasures') 



{ 
    "pleasures": [ 
     { 
      "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4", 
      "subCategory": [ 
       "432f1ae1-a7b1-11e7-86dc-d709d79803e4" 
      ] 
     }, 
     { 
      "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4", 
      "subCategory": [ 
       "432f1af5-a7b1-11e7-86dc-d709d79803e4" 
      ] 
     }, 
     { 
      "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4", 
      "subCategory": [ 
       "432f1afb-a7b1-11e7-86dc-d709d79803e4", 
       "432f1afc-a7b1-11e7-86dc-d709d79803e4", 
       "432f1afd-a7b1-11e7-86dc-d709d79803e4" 
      ] 
     }, 
     { 
      "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4", 
      "subCategory": [ 
       "432f1b03-a7b1-11e7-86dc-d709d79803e4", 
       "432f1b04-a7b1-11e7-86dc-d709d79803e4", 
       "432f1b07-a7b1-11e7-86dc-d709d79803e4" 
      ] 
     } 
    ] 
} 

et je veux comparer chacun des éléments (sans l'utilisateur '1') à l'intérieur de ce plaisir.subCategory avec d'autres enregistrements à l'intérieur de la même table avec la même structure.

Tableau avec 3 records

[ 
    { 
     "date": "2017-10-03T03:58:02.651Z", 
     "id": "d82279a7-fbc6-40a2-99ca-39796ea57efa", 
     "pleasures": [ 
      { 
       "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1ae1-a7b1-11e7-86dc-d709d79803e4" 
       ] 
      }, 
      { 
       "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1af5-a7b1-11e7-86dc-d709d79803e4" 
       ] 
      }, 
      { 
       "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1afb-a7b1-11e7-86dc-d709d79803e4", 
       ] 
      }, 
      { 
       "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1b03-a7b1-11e7-86dc-d709d79803e4", 
       ] 
      } 
     ], 
     "user": "1" 
    }, 
    { 
     "date": "2017-10-07T02:59:45.942Z", 
     "id": "174c0e35-da79-4ca8-b237-8ec569cc27b1", 
     "pleasures": [ 
      { 
       "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1ae1-a7b1-11e7-86dc-d709d79803e4", 
       ] 
      }, 
      { 
       "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1af3-a7b1-11e7-86dc-d709d79803e4", 
        "432f1af4-a7b1-11e7-86dc-d709d79803e4" 
       ] 
      }, 
      { 
       "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1aff-a7b1-11e7-86dc-d709d79803e4", 
       ] 
      }, 
      { 
       "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1b04-a7b1-11e7-86dc-d709d79803e4", 
       ] 
      } 
     ], 
     "user": "10" 
    }, 
    { 
     "date": "2017-10-07T02:07:13.715Z", 
     "id": "dd11edac-e0f5-43ac-811a-eaa78a6509c7", 
     "pleasures": [ 
      { 
       "category": "432f1ae0-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1ae1-a7b1-11e7-86dc-d709d79803e5" 
       ] 
      }, 
      { 
       "category": "432f1aef-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1af3-a7b1-11e7-86dc-d709d79803e5" 
       ] 
      }, 
      { 
       "category": "432f1afa-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1af3-a7b1-11e7-86dc-d709d79803e6" 
       ] 
      }, 
      { 
       "category": "432f1b02-a7b1-11e7-86dc-d709d79803e4", 
       "subCategory": [ 
        "432f1af3-a7b1-11e7-86dc-d709d79803e7" 
       ] 
      } 
     ], 
     "user": "25" 
    } 
] 

je pense que peut-être que ce soit:

r.db('fotogena').table('users').filter({user:'1'}).pluck('pleasures').map(pleasures=>{ 
    return //do something 
}) 

Répondre

0

je pourrais le résoudre, par la suite de la recherche et la recherche, je pourrais créer un script qui montrent que i Je veux obtenir

Je l'ai fait faire dans une requête unique (pas de jointures) comparer des tableaux avec des tableaux en utilisant .contains() et a travaillé très bien

r.db('fotogena').table('users').filter(users=>{ 
    return users('pleasures').contains(category=>{ 
     return category('subCategory').contains(subCategory=>{ 
      return r.db('fotogena').table('users').filter({user: '1'}).pluck('pleasures').contains(pleasures2=>{ 
       return pleasures2('pleasures').contains(subCate2=>{ 
        return subCate2('subCategory') 
        .contains(subCategory2=>{ 
         return subCategory2.eq(subCategory) 
        }) 

       }) 
      }) 
     }) 
    }).and(users('user').ne('1')) 
})