2014-05-21 19 views
7

Tôi có một bộ sưu tập Mongo nơi tôi cần di chuyển một mảng các đối tượng vào một bộ sưu tập riêng biệt.

Bộ sưu tập là ở định dạng này:

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

Tôi muốn để tháo gỡ những mảng đối tượng vào một bộ sưu tập riêng biệt.

Theo tài liệu về $ out tại số http://docs.mongodb.org/manual/reference/operator/aggregation/out/ Tôi có thể sử dụng toán tử để tạo bộ sưu tập mới.

Hai hoạt động đầu tiên trong Mongo việc lệnh shell sau để tháo gỡ những mảng vào một danh sách nhưng nó không thành công khi tôi thêm các hoạt động $ ra:

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

Lỗi:

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

Cả khách hàng và máy chủ đều chạy 2,6 chưa? – Martin

+4

Đó là nó! Tại shell, phiên bản() cho thấy 2.6.1 nhưng db.version() là 2.4.9; Tôi đã nâng cấp Mongo nhưng chưa sao chép qua nhị phân mongod mới và khởi động lại dịch vụ đó. Sau khi tôi đã làm điều đó, db.version() cho thấy 2.6.1 và bây giờ hoạt động $ out hoạt động. Cảm ơn – dr3x

Trả lời

11

Make chắc chắn bạn đang sử dụng phiên bản mới nhất. $ ra là mới trong 2.6, sử dụng 2.6.2 làm việc hoàn hảo cho tôi!

+2

Đây phải là nhận xét chứ không phải là câu trả lời. – Animesh

Các vấn đề liên quan