Как отфильтровать вложенные поля в rethinkdb - PullRequest
0 голосов
/ 14 января 2019

Как запросить и вернуть все каналы с совпадающим идентификатором канала из документа:

Например, моя таблица переосмысления содержит следующий документ:

{
  "agreement_id": "5",
  "channels": [
    {
      "channelId": "8deb-6b37-4678115-917d-ad365ae57e19",
      "lab_cost": 333,
      "learner_cost": 30,
      "net_revenue": 20.87,
      "orgId": "gmudam",
      "publisher": "oci-jumpstart",
      "publisher_revenue": 4.97,
      "ql_revenue": 16.9,
      "realm_cost": 1.13
    },
    {
      "channelId": "8deb-6b37-4678115-917d-ad365ae57e19",
      "lab_cost": 444,
      "learner_cost": 30,
      "net_revenue": 20.87,
      "orgId": "gmudam",
      "publisher": "oci-jumpstart",
      "publisher_revenue": 4.97,
      "ql_revenue": 16.9,
      "realm_cost": 1.13
    }
  ]
}

1 Ответ

0 голосов
/ 15 января 2019

Чтобы извлечь все каналы по идентификатору канала из документа, вы можете сделать следующее:

r.db("DB").table("TABLE").get("agreement_id")("channels")
     .filter(function(channel){ 
       return channel("channelId").eq("8deb-6b37-4678115-917d-ad365ae57e19")})

Это даст вам все каналы с идентификатором "8deb-6b37-4678115-917d-ad365ae57e19". Например:

[
    {
      "channelId": "8deb-6b37-4678115-917d-ad365ae57e19",
      "lab_cost": 333,
      "learner_cost": 30,
      "net_revenue": 20.87,
      "orgId": "gmudam",
      "publisher": "oci-jumpstart",
      "publisher_revenue": 4.97,
      "ql_revenue": 16.9,
      "realm_cost": 1.13
    },
    {
      "channelId": "8deb-6b37-4678115-917d-ad365ae57e19",
      "lab_cost": 444,
      "learner_cost": 30,
      "net_revenue": 20.87,
      "orgId": "gmudam",
      "publisher": "oci-jumpstart",
      "publisher_revenue": 4.97,
      "ql_revenue": 16.9,
      "realm_cost": 1.13
    }
  ]
...