Grupo MongoDB por elementos internos da matriz
Eu tenho uma lista de artigos, e cada um deles tem uma propriedade de matriz que lista vários indivíduos mencionados neles:
_id: {
$oid: "52b632a9e4f2ba13c82ccd23"
},
providerName: "The Guardian",
url: "http://feeds.theguardian.com/c/34708/f/663860/s/3516cebc/sc/38/l/0L0Stheguardian0N0Cmusic0C20A130Cdec0C220Cwaterboys0Efishermans0Eblues0Etour0Ehammersmith/story01.htm",
subject: "The Waterboys – review",
class_artist: [
"paul mccartney"
]
Eu tenho tentado (sem sucesso) obter uma lista de todos os artistas individuais (class_artist
), com base no número de artigos nos quais foram marcados nos últimos sete dias.
Eu cheguei até:
var date = new Date();
date.setDate(date.getDate() - 7);
db.articles.group({
key: { class_artist: 1 },
cond: { class_date: { $gt: date } },
reduce: function ( curr, result ) { result.cnt++; },
initial: { cnt : 0 }
}).sort({cnt: -1});
Infelizmente, porém, não os conta com base nos valores individuais da matriz, mas pelas composições da matriz (ou seja, listas de artistas).
Eu tentei usar o$unwind
função, mas não foram capazes de fazê-lo funcionar.