rethinkdb,如何通过特定的“数组索引”值来提取结果?

时间:2019-03-27 10:22:20

标签: rethinkdb rethinkdb-javascript

样本数据

[
  {
    "createdDate": 1508588333821,
    "data": {
      "image_extension": "png",
      "name": "Golden",
      "qty": 1,
      "remark": "#296-2",
      "status": "RETURN",
      "owner": [
        {
          "name": "app1emaker",
          "location": 1
        },
        {
          "name": "simss92_lmao",
          "location": 31
        }        
      ]
    },
    "deleted": false,
    "docId": 307,
    "docType": "product",
    "id": "db0131f9-9359-4aa3-b6ed-cd9f3ff4aa3e",
    "updatedDate": 1553155281691
  },
  {
    "createdDate": 1508588333324,
    "data": {
      "image_extension": "png",
      "name": "Golden",
      "qty": 1,
      "remark": "#296-2",
      "status": "DISCARD",
      "owner": [
        {
          "name": "At533",
          "location": 7
        },
        {
          "name": "madsimon",
          "location": 64
        },
        {
          "name": "boyboy96",
          "location": 1
        },
        {
          "name": "xinfengCN",
          "location": 5
        }
      ]
    },
    "deleted": false,
    "docId": 308,
    "docType": "product",
    "id": "3790bdaa-5347-4ab0-8149-37332c23c6ea",
    "updatedDate": 1554555231691
  },
  ...
  ...
]

并说,我只想在数组索引0上选择data.owner(或者我应该说data.owner [0]),

{
  "name": "app1emaker",
  "location": 1
}

{
  "name": "At533",
  "location": 7
}
在这种情况下

。我下面的代码失败。

r.db('carbon').table("items").pluck(['id', 'docId', 'createdDate',{data:{name: true, owner:[0]}}])

我看到对于某些函数,例如orderBy,rethinkdb允许使用orderBy(r.row('data')('owner')(0)('name'))访问嵌套对象,但我不知道如何做到这一点?谁能给我一些提示? 非常感谢

1 个答案:

答案 0 :(得分:1)

pluck无法做到这一点,但是您可以退回以使用 map

r.db("carbon").table("items").map(function(doc){
  return {
    "id": doc("id"), 
    "docId": doc("docId"),
    "createdDate": doc("createdDate"),
    "data": {
      "name": doc("data")("name"),
      "owner": doc("data")("owner")(0)
    }
  }
})