Created
September 13, 2013 18:11
-
-
Save neumino/6554108 to your computer and use it in GitHub Desktop.
Filtering nested arrays with RethinkDB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
r.table("test").filter( function(doc) { | |
return doc("adresses").contains(function(adress) { | |
return adress("city").eq("Paris") | |
}) | |
}) | |
/* | |
{ | |
name: "Bob", | |
adresses: [ | |
{ | |
country: "France", | |
city: "Paris" | |
} | |
] | |
} | |
*/ |
Looks like as required in RethinkDB 2.3.6
. It returns the whole objects which contains addresses that contain at least one city=Havana. Of course it returns other addresses too, because only filter for searching was used (no data plucking).
Btw thanks for the query, i was searching for exactly this.
👍
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If there are more than three addresses on the fourth the query can not find do not return anything. Do you have any idea if it's a limitation of rethinkdb or I must try to do other way?. Thank you!
Query and data example are bellow:
r.table("test").filter( function(doc) { return doc("adresses").contains(function(adress) { return adress("city").eq("Havana") }) })
{ name: "Bob", adresses: [ { country: "France", city: "Paris" }, { country: "Austria", city: "Vienna" }, { country: "Belgium", city: "Brussels" }, { country: "Cuba", city: "Havana" } ] }