如何在 rethinkDB 中查找嵌套的 Value only 字段数据的值?

How to find value of nested Value only field data in rethinkDB?

我的第一个 concatMap return 如下。我想获得 "d" 的值,所以该值将是 "Rethinkdb"

 [  
       {  
          "a":{  
             "b":{  
                "c":"NoSQL",
                "d":"Rethinkdb"
             }
          }
       },
       {  
          "a":{  
             "b":"text"
          }
       },
       {  
          "a":{  
             "b":"another"
          }
       }
    ]

我试过 r.(...).concatMap(function(f){return f("a")("b")("d")}) 但是显示错误RqlRuntimeError: Cannot perform bracket on a non-object non-sequence(这是因为在2nd和3rd "b"中没有"d")。我不能使用 nth 因为 "d" 不会总是在数组的第一个元素。

您应该看看 hasFields 方法,它能够使用布尔值检查嵌套属性是否存在。在文档中有一个关于这种情况的很好的例子。

我会先获取所有包含您想要的字段的文档,然后再执行 concatMap

r.table('')
 // Get all documents with a value in property in `a.b.d`
 // `true` here doesn't refer to the value of the property, 
 // but to its existence
 .hasFields({ a: { b: { d: true } } })
 .concatMap(function (row) {
   return [ row('a')('b')('d') ];
 })