How to join tables with a array of IDs

后端 未结 1 1925
天涯浪人
天涯浪人 2021-01-04 23:52

Attempting to use this example to join on an array of IDs: https://github.com/rethinkdb/rethinkdb/issues/1533#issuecomment-26112118

Stores table snippet

相关标签:
1条回答
  • 2021-01-05 00:49

    You're using concatMap incorrectly, here's what you want the first part of your query to be.

    r.table("stores")
     .concatMap(function (x) {
       return x("locations");
     })
    

    Try running that, it should give you:

    ["5fa96762-...", "80362c86-...", ...]
    

    Now we need to join this to the other table. To join an array of ids to a table you can use eqjoin like so:

    array.eqJoin(function (row) { return row; }, table)
    

    There's more details here: rql get multple documents from list of keys rethinkdb in javascript.

    Putting it all together we get:

    r.table("stores")
     .concatMap(function (x) {
       return x("locations")
     })
     .eqJoin(function (i) { return i; }, r.table("locations"))
    

    To get back the documents from the stores:

    r.table("stores")
     .concatMap(function (x) {
       return x("locations").map(function (loc) {
          return x.merge({locations: loc});
       });
     })
     .eqJoin("locations", r.table("locations"))
    
    0 讨论(0)
提交回复
热议问题