Consulta Crossfilter

É possível filtrar um conjunto de dados de filtro cruzado que tenha uma matriz como o valor?

Por exemplo, digamos que eu tenha o seguinte conjunto de dados:

var data = [
  {
    bookname: "the joy of clojure",
    authors: ["Michael Fogus", "Chris Houser"],
    tags: ["clojure", "lisp"]
  },
  {
    bookname: "Eloquent Ruby",
    authors: ["Russ Olsen"],
    tags: ["ruby"]
  },
  {
    bookname: "Design Patterns in Ruby",
    authors: ["Russ Olsen"],
    tags: ["design patterns", "ruby"]
  }
];

Existe uma maneira fácil de acessar os livros marcados por uma tag específica? E também os livros que têm um autor particular? A maneira como eu entendo como usar crossfilter até agora me fez algo parecido com isto:

var filtered_data = crossfilter(data);
var tags = filtered_data.dimension(function(d) {return d.tags});
var tag = tags.group();

E então quando eu acessar o agrupamento (assim):

tag.all()

Eu entendi isso:

[{key: ["clojure", "lisp"], value: 1}, 
 {key: ["design patterns", "ruby"], value: 1}, 
 {key: ["ruby"], value: 1}]

Quando eu preferiria ter isso:

[{key: "ruby", value: 2}, 
 {key: "clojure", value: 1}, 
 {key: "lisp", value: 1},
 {key: "design patterns", value: 1}]

questionAnswers(2)

yourAnswerToTheQuestion