2013-10-21 11 views
10

MongoDb'nin $ project aggregation operatörünün belgeyi bir diziye yeniden yapılandırması mümkün mü? Ben istiyorum

[ 
    { 
    x: '...', 
    y: '...' 
    } 
.... 
] 

olması:

[ 
    ['..','..'] 
    .... 
] 

ben kolayca yeniden yapılandırılması Bu bana formun çıktısını verir

var pipeline = []; 
var project = { 
    $project : { 
     x: "$_id", 
     y: "$y" , 
     _id : 0 
    } 
}; 
pipeline.push(project); 
model.aggregate(pipeline, callback); 

: Burada

Bugüne kadar ne yaptığını çıktıyı yineleyerek, ancak toplamanın kendisinin nesne yerine dizi döndürüp döndüremeyeceğini bilmek gerçekten meraklıdır.

cevap

4

$ İtme işleci ile deneyebilirsiniz. Örneğin

, sizin gibi belgeler olsaydı : Eğer

db.model.aggregate([ { $group: { _id: null, newArrayField: { $push: { x: "$_id", y: "$y" } } } } ]) 

yazarsanız Mongo kabuğunda

{ _id: <something>, y: 5 } 

, Sen alacağı: Daha fazla bilgi için

{ 
    "result" : [ 
     { 
      "_id" : null, 
      "newArrayField" : [ 
       { 
        "x" : ObjectId("5265dd479eb4b1d4289cf222"), 
        "y" : 5 
       } 
      ] 
     } 
    ], 
    "ok" : 1 
} 

$ itme operatörü üzerinde, bkz. http://docs.mongodb.org/manual/reference/operator/aggregation/push/

MongoDB 3.2 ile
+6

"sonucunu" sahip olmak ister misiniz yapabilirsiniz: [[Nesne Kimliği ("5265dd479eb4b1d4289cf222"), 5]] –