node.js - Mongo Aggregation Framework with Mongoose raising Document Limit exception on simple Projection -
i have collection links (schema below) 500k entries.
{ url, title, owner, stars: { users: [{ name }]}, createdat } and not understand why simple aggregation projection
var projection = { $project: { _id: 1, url: 1, title: 1, createdat: 1 } } link.aggregate([projection]).exec(resultcallback); raises
mongoerror: exception: aggregation result exceeds maximum document size (16mb) could explain me ?
i'm using mongoose (3.8.8) , mongodb (2.6.0)
not sure if options available mongodb 2.6 , on-wards available in .aggregate() method implementation in mongoose. there should options "hash/object" available after pipeline argument. basically:
var pipeline = [{ $project: { _id: 1, url: 1, title: 1, createdat: 1 } }]; link.aggregate(pipeline,{ cursor: true}, function(err,cursor) { }); or if mongoose doesn't reason raw node driver collection:
var pipeline = [{ $project: { _id: 1, url: 1, title: 1, createdat: 1 } }]; link.collection.aggregate(pipeline,{ cursor: true}, function(err,cursor) { if (err) throw err; // cursor more akin node // stream interface basic .next() method , other helpers. }); otherwise since output blowing 16mb bson limit can output collection:
var pipeline = [ { $project: { _id: 1, url: 1, title: 1, createdat: 1 } }, { $out: "newcollection" } ]; but since testing, why not use $limit pipeline stage until work out rest of aggregation:
var pipeline = [ { $project: { _id: 1, url: 1, title: 1, createdat: 1 } }, { $limit: 50 } ]; so there few different ways handle things.
Comments
Post a Comment