2014-05-21 10 views
7

Possiedo una raccolta Mongo in cui è necessario spostare una serie di oggetti in una raccolta separata.

La collezione è in questo formato:

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

Vorrei svolgere la matrice oggetto in una raccolta differenziata.

Secondo la documentazione per $ out a http://docs.mongodb.org/manual/reference/operator/aggregation/out/ dovrei essere in grado di utilizzare l'operatore per creare una nuova collezione.

Le prime due operazioni nel seguente lavoro comando di shell Mongo possono provare la matrice in un elenco, ma fallisce quando aggiungo il $ out operazione:

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

Errore:

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

Sia il client che il server sono in esecuzione 2.6? – Martin

+4

E 'stato! Nella shell, version() mostrava 2.6.1 ma db.version() era 2.4.9; Avevo aggiornato Mongo, ma non avevo ancora copiato il nuovo binario di mongod e riavviato quel servizio. Dopo averlo fatto, db.version() ha mostrato 2.6.1 e ora l'operazione $ out funziona. Grazie – dr3x

risposta

11

Marchio sicuro che stai usando l'ultima versione. $ out è nuovo nel 2.6, utilizzando 2.6.2 ha funzionato perfettamente per me!

+2

Questo dovrebbe essere un commento piuttosto che una risposta. – Animesh