Reputation: 21
I have a data set like follows-
[{
"name": "new name",
"tags":[{
"addedBy": "userABCe3" ,
"addedDTS": Tue Jan 23 2018 13:02:37 GMT+00:00 ,
"tagId": "08d679c8-31b6-48d3-b8f3-3ab89f7bb821"
},{
"addedBy": "userABCe3" ,
"addedDTS": Tue Jan 23 2018 13:02:37 GMT+00:00 ,
"tagId": "08d679c8-31b6-48d3-b8f3-3ab89f7bb823"
}]
},
{
"name": "data 1",
"tags":[{
"addedBy": "userABCe3" ,
"addedDTS": Tue Jan 23 2018 13:02:37 GMT+00:00 ,
"tagId": "08d679c8-31b6-48d3-b8f3-3ab89f7bb823"
},{
"addedBy": "userABCe3" ,
"addedDTS": Tue Jan 23 2018 13:02:37 GMT+00:00 ,
"tagId": "08d679c8-31b6-48d3-b8f3-3ab89f7bb824"
}]
}]
i need to query, the data having any atleast one match in given tagIds array
[ "08d679c8-31b6-48d3-b8f3-3ab89f7bb824", "08d679c8-31b6-48d3-b8f3-3ab89f7bb822"]
expected result as follows :
[{
"name": "data 1",
"tags":[{
"addedBy": "userABCe3" ,
"addedDTS": Tue Jan 23 2018 13:02:37 GMT+00:00 ,
"tagId": "08d679c8-31b6-48d3-b8f3-3ab89f7bb823"
},{
"addedBy": "userABCe3" ,
"addedDTS": Tue Jan 23 2018 13:02:37 GMT+00:00 ,
"tagId": "08d679c8-31b6-48d3-b8f3-3ab89f7bb824"
}]
}]
thanks in advance
Upvotes: 1
Views: 46
Reputation: 21
this query worked for me
r.db('dbName').table("tableName").filter(function(doc){
var tags = doc('tags')('tagId');
var tagIds = ['08d679c8-31b6-48d3-b8f3-3ab89f7bb881','08d679c8-31b6-48d3-b8f3-3ab89f7bb823' ];
var query = tagIds.map(function(tagId){
return tags.contains(tagId)
});
return r.expr(query).contains(true)
})
Upvotes: 1