Ora puoi farlo in Mongo 3.2 usando $lookup
$lookup accetta quattro argomenti
from :specifica la raccolta nello stesso database con cui eseguire l'unione. Impossibile partizionare dalla raccolta.
localField :specifica il campo dai documenti immessi nella fase di ricerca $. $lookup esegue una corrispondenza di uguaglianza tra localField e ForeignField dai documenti della collezione from.
foreignField :specifica il campo dei documenti nella raccolta.
as :specifica il nome del nuovo campo della matrice da aggiungere ai documenti di input. Il nuovo campo dell'array contiene i documenti corrispondenti dalla raccolta.
db.Foo.aggregate(
{$unwind: "$bars"},
{$lookup: {
from:"bar",
localField: "bars",
foreignField: "_id",
as: "bar"
}},
{$match: {
"bar.testprop": true
}}
)