2

我正在使用 nodejs 查询 mongodb 并希望输出带有自定义字段名称的 json。

例如,来自 MongoDB 的原始 json 可能

    {id:1, text:"abc"}

我想将其输出为

    {ObjectID:1, DisplayText:"abc"};

我了解 MongoDB 在其聚合框架中有 $project 运算符,但不确定如何在 NodeJS 中使用它们。

我正在使用的 mongodb nodejs 包是

    var mongo = require('mongodb');
    var monk = require('monk');
    var db = monk('server:port/mydb');

感谢您对此的任何建议。

4

2 回答 2

9

如果您使用的是和尚,那么您可以通过.col所选集合对象上的访问器访问底层节点本机驱动程序集合类型:

  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 ) );

    }
  );

请注意,.aggregate()以这种方式检索的方法并没有像标准的僧侣集合对象那样包装在承诺对象中。但至少这向您展示了如何访问和使用$project来重新塑造您的文档。

于 2014-05-31T04:20:53.130 回答
0

看看 Mongoose 中的 Virtuals http://mongoosejs.com/docs/guide.html#virtuals

您可以执行以下操作:

someSchema.virtual('text').get(function() {
    return this.DisplayText;
}
于 2014-05-30T11:30:25.900 回答