如何在 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') ];
})
我的第一个 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') ];
})