In NodeJS, how to output results from mongodb with different field names?
aggregation-framework, javascript, mongodb, monk, node.js
Solution
If you are using monk as you appear to be then you can access the underlying node native driver collection type via the `.col` accessor on your selected collection object:
var db = require('monk')('localhost/test')
, collection = db.get('example');
collection.col.aggregate(
[
{ "$project": {
"_id": 0,
"ObjectID": "$_id",
"DisplayText": "$text"
}}
],
function(err,result) {
console.log( JSON.stringify( result, undefined, 4 ) );
}
);
Note that methods such as `.aggregate()` retrieved in this way are not wrapped in the promise object as the standard monk collection objects are. But at least this shows you how to access and use `$project` to re-shape your document.
Problem
I'm using nodejs to query mongodb and want to output json with customized field names. For example, original json from MongoDB maybe ``` {id:1, text:"abc"} ``` I'd like to output it as ``` {ObjectID:1, DisplayText:"abc"}; ``` I understand MongoDB has the $project operator in its aggregate framework but not sure how to use them in NodeJS. The mongodb nodejs packages I'm using are ``` var mongo = require('mongodb'); var monk = require('monk'); var db = monk('server:port/mydb'); ``` Appreciate any advice on this.