Reputation: 149
Is it possible to filter the elements of a nested array in RethinkDB, similar to $elemMatch in MongoDB?
For example, if we have a simple table collection like:
[
{
"name": "test1" ,
"nested": [
{
"name": "nested1" ,
"user": "paul"
} ,
{
"name": "nested2" ,
"user": "paul"
} ,
{
"name": "nested3" ,
"user": "dave"
}
]
} ,
{
"name": "test2" ,
"nested": [
{
"name": "nested4" ,
"user": "dave"
} ,
{
"name": "nested5" ,
"user": "paul"
} ,
{
"name": "nested6" ,
"user": "steve"
}
]
}
]
How would I write a filter to return documents, with filtered arrays that contain the user "paul"?
So my result would be:
[
{
"name": "test1" ,
"nested": [
{
"name": "nested1" ,
"user": "paul"
} ,
{
"name": "nested2" ,
"user": "paul"
}
]
} ,
{
"name": "test2" ,
"nested": [
{
"name": "nested5" ,
"user": "paul"
}
]
}
]
I can get the documents with:
r.db('test').table('example').filter(r.row('nested')('user').contains('paul'))
How do I then filter the nested arrays?
Thanks,
Paul
Upvotes: 2
Views: 253
Reputation: 2835
table.map(function(row) {
return row.merge({
nested: row('nested').filter({user: 'paul'})
})
})
Upvotes: 2