我有这样的文档:
{
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')