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.