Unë jam i ri në MongoDB dhe kam nevojë për ndihmë për të përmbushur detyrën time:
Unë jam duke përdorur MongoDB për të kërkuar veprime që janë ndërmarrë nga një person. Veprimet janë të ngulitura në dokumentin e personit si kjo:
{
"_id" : ObjectId("56447ac0583d4871570041c3"),
"email" : "[email protected]",
"actions" : [
{
"name" : "support",
"created_at" : ISODate("2015-10-17T01:40:35.000Z"),
},
{
"name" : "hide",
"created_at" : ISODate("2015-10-16T01:40:35.000Z")
},
{
"name" : "support",
"created_at" : ISODate("2015-10-17T03:40:35.000Z"),
}
]
}
Një person mund të ketë shumë veprime me emra të ndryshëm veprimesh (support
dhe hide
janë vetëm 2 shembuj).
E di që mund t'i gjej të gjithë njerëzit me të paktën një veprim support
si ky:
db.test.find({'actions.name':'support'})
Ajo që dua të bëj, është të marr të gjithë njerëzit me të paktën X support
veprime. A është e mundur kjo pa përdorur sintaksë javascript? Meqë njerëzit mund të kishin qindra veprime, kjo do të ishte e ngadaltë.
Pra, nëse dua të gjithë njerëzit me të paktën 2 veprime support
, mënyra e vetme që di do të ishte përdorimi i sintaksës js:
db.test.find({$where: function() {
return this.actions.filter(function(action){
return action.name = 'support';
}).length >= 2;
}});
A ka ndonjë mundësi tjetër/më të mirë/më të shpejtë për këtë pyetje?