javascript - Moment converts date as string for find query and object for aggregate query. How & Why? -


when use find query returns date object whereas while using aggregate gives date string after converting using moment. why?

find query

this.find({},{     "updated_at":1,     "created_at":1, },callback); 

aggregate query

this.aggregate([{     $project:{         "updated_at" :1,         "created_at" :1,     } }],callback); 

now when convert date est using moment following results

// lets query result in dataarray  var created_at = moment(dataarray[0].created_at); var created_at_est = created_at.clone().tz("america/new_york"); dataarray[0].created_at = created_at_est.format('ddd mmm dd yyyy hh:mm:ss'); console.log(typeof(dataarray[0].created_at));  // result string in aggregate query , object in find query 

i not able understand why happening? can explain this?

it's because find provides results mongoose document instances (which can't freely modified) while aggregate provides results plain objects (which can).

so if want modify created_at field in find results, tell mongoose provide plain objects instead chaining call lean():

this.find({},{     "updated_at":1,     "created_at":1, }).lean().exec(callback); 

Comments

Popular posts from this blog

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.Error occurred in starting fork -

windows - Debug iNetMgr.exe unhandle exception System.Management.Automation.CmdletInvocationException -

configurationsection - activeMq-5.13.3 setup configurations for wildfly 10.0.0 -