如何使用Couchbase子文档API从对象数组中检索字段的子集?

时间:2018-08-28 09:11:16

标签: node.js couchbase

我正在尝试编写一个从文档返回数组并跳过某些字段的查找:

 {
    "id": 10000,
    "schedule": [
      {
        "day": 0,
        "flight": "AF198",
        "utc": "10:13:00"
      },
      {
        "day": 0,
        "flight": "AF547",
        "utc": "19:14:00"
      },
      ...
    ]
  }

我想获取所有计划项目,但仅获取排期属性。我想得到这样的东西:

[
   { 
       "flight: "AF198"
   },
   { 
       "flight: "AF547"
   },
   ...
]

bucket.lookupIn(key).get("schedule.flight")不起作用。我尝试了"schedule[].flight""schedule.$.flight",看来我总是需要了解索引。

我看到N1QL可以实现。

Couchbase - SELECT a subset of fields from array of objects

你们知道如何使用Subdocument API做到这一点吗?抱歉,这是一个琐碎的问题。我只是在

上找不到示例

https://developer.couchbase.com/documentation/server/current/sdk/subdocument-operations.html

1 个答案:

答案 0 :(得分:2)

Couchbase子文档需要完整路径,它不支持扩展。在这种情况下,它需要知道数组的索引。还有其他一些选择:

  1. 如果每个路径都已知,则可以链接所有子文档获取。一次总共可以获取16条路径: bucket.lookupIn(key).get("schedule[0].flight").get(schedule[1].flight")

  2. 获取父对象并在应用程序端进行过滤: bucket.lookupIn(key).get("schedule")

  3. 如问题中所述,使用N1QL。