2017-01-24 2 views
0

Я хочу получить in часть в одном измерении as; ["art", "music", "cinema" , "calculus" , "science"]Вернуть одномерный массив из запроса в mongodb

структура есть;

enrolled: 
[ 
    {in : "art", registerAt: ""}, 
    {in : "music", registerAt: ""}, 
    {in : "cinema", registerAt: ""}, 
    {in : "calculus", registerAt: ""}, 
    {in : "science", registerAt: ""}, 
] 

чтобы иметь возможность это сделать, я написал запрос;

db.deneme.find({}, {"enrolled.in" : 1, _id: 0}).toArray(function(err, result){ 
    var arr =[]; 
    for(var i=0; i < result.in.length; i++){ 
    arr.push(result.in[i].in); 
    } 
}) 

Есть ли лучший способ?

ответ

0

Вы можете использовать aggregate запрос

db.deneme.aggregate([ 
    {$unwind:"$enrolled"}, 
    {$group:{ 
     _id:"$_id", 
     in:{$addToSet:"$enrolled.in"} 
     } 
    } 
]).toArray(function(err, result){ 
    console.log(result) 
}) 
Смежные вопросы