2014-05-21 20 views
7

Bir dizi nesneyi ayrı bir koleksiyona taşımam gereken bir Mongo koleksiyonum var.

koleksiyonu bu biçimindedir:

{ 
    _id: ObjectId("..."), 
    name: "...", 
    description: "...", 
    widgets: [ 
     { someprop: somevalue }, 
     { someprop: somevalue } 
    ] 
} 

Ben ayrı koleksiyon haline nesne dizisi dinlenmek istiyorum.

http://docs.mongodb.org/manual/reference/operator/aggregation/out/ adresindeki belgelere göre, yeni bir koleksiyon oluşturmak için operatörü kullanabilmem gerekir. Aşağıdaki Mongo kabuk komut çalışmalarında

ilk iki operasyon bir listeye dizi gevşemeye ama $ dışarı operasyonu eklerken başarısız:

db.mytable.aggregate([ 
    { $project : {_id: 0, datasets : 1}}, 
    { $unwind : "$widgets"}, 
    { $out: "widgets"} 
]); 

Hata:

Error: command failed: { 
"errmsg" : "exception: Unrecognized pipeline stage name: '$out'", 
"code" : 16436, 
"ok" : 0 
} : aggregate failed at src/mongo/shell/assert.js:13 
+2

Hem istemci hem de sunucu 2.6 çalışıyor mu? – Martin

+4

İşte buydu! Kabukta, sürüm() 2.6.1 gösterdi, ancak db.version() 2.4.9; Mongo'yu yükselttim ama henüz yeni mongod ikilisini kopyalamamıştım ve bu hizmeti yeniden başlatmıştım. Bunu yaptıktan sonra db.version() 2.6.1 gösterdi ve şimdi $ out işlemi çalışıyor. Teşekkürler – dr3x

cevap

11

Yap En son sürümü kullandığınızdan emin olun. $ dışarıda 2.6, 2.6.2 kullanarak benim için mükemmel çalıştı!

+2

Bu bir cevap yerine bir yorum olmalı. – Animesh

İlgili konular