我有这样的文件:
{
id:1,
"A": [
{
"C": "abc",
"D": [{X:"test"},{X:"test2"}]
},
{
"C": "fg",
"D":["X1"]
}
]
}
如何获取标签与A->匹配的文档的所有ID D - > X具有值“测试”。我可以使用concatMap()
但是当我使用它时,我无法获得“id”字段,也无法在map
内使用它,是否有类似$unwind
Mongodb
的功能聚合框架?
类似于:Querying array of nested objects
[原始问题]
{
id:2,
tags[{a:3,b:4},..]
}
答案 0 :(得分:2)
你的原始问题有这个对象:
{ 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')