In the previous versions of RethinkDB you could use the pluck
command to extract only specific attributes from an object or a
sequence of objects:
r.expr({a: 1, b: {c: 1, d: 1}}).pluck('b')
// returns `b: {c: 1, d: 1}`
r.expr([{a: 1, b: {c: 1, d: 1}},
{a: 2, b: {c: 2, d: 2}}]).pluck('b')
// returns `[{b: {c: 1, d: 1}}, {b: {c: 2, d: 2}}]`
However, the pluck
syntax wasn't powerful enough to extract nested
attributes from the object (like c
or d
in the example above). The
new pluck
syntax introduces support for extracting nested
attributes:
r.expr({a: 1, b: {c: 1, d: 1}}).pluck('b')
// returns `b: {c: 1, d: 1}`, like it did before
r.expr({a: 1, b: {c: 1, d: 1}}).pluck({b: {c: true}})
// returns `b: {c: 1}`
r.expr({a: 1, b: {c: 1, d: 1}}).pluck({b: {c: true, d: true}})
// returns `b: {c: 1, d: 1}`
// There is also a shortcut syntax to get multiple attributes on the
// same level of nestedness in the object
r.expr({a: 1, b: {c: 1, d: 1}}).pluck({b: ['c', 'd']})
// returns `b: {c: 1, d: 1}`
This syntax, of course works on sequences as well as objects. If the
feedback on the pluck
command is good, we'll include this syntax
into other commands, like without
, orderBy
, etc.
See more about the 1.7 release in the release announcement.