如何剥离一个数组的元素单独在rethinkdb

How to Peels off the elements of an array individually in rethinkdb?

本文关键字:元素 rethinkdb 数组 单独 何剥离 剥离 一个      更新时间:2023-09-26

我有这样的文档:

{
   id:1,
  "A": [
    {
      "C": "abc",
      "D": [{X:"test"},{X:"test2"}]
    },
    {
      "C": "fg",
      "D":["X1"]
    }
  ]
}

如何获取标签匹配A-> D -> X值为"test"的文档的所有id。我可以使用concatMap(),但是当我使用它时,我无法获得"id"字段,也无法在map中使用,Mongodb的聚合框架中是否有类似$unwind的功能?类似于:查询嵌套对象数组

(原始问题)

{
id:2,
tags[{a:3,b:4},..]
}

您最初的问题有这个对象:

{ id: 2,
  tags: [ { a: 3, b: 4 }, ... ] }

您可以构造一个谓词来查找相关文档,并将其传递给filter

r.table(...).filter(r.row('tags')('a').contains(3))('id')

在这种情况下,查询的('a')部分,当应用于一个数组时,返回该数组中每个对象的a字段的数组,如果有的话。

你编辑过的问题有一个更复杂的对象,但原理是一样的:

r.table(...).filter(
   r.row('A')('D').concatMap(function(x){return x})('X').contains("test")
)('id')