В NodeJS, как вывести результаты из mongodb с разными именами полей?

Я использую nodejs для запроса mongodb и хочу вывести json с настроенными именами полей.

Например, оригинальный JSON из MongoDB может быть

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

Ценю любые советы по этому вопросу.

2 ответа

Решение

Если вы используете monk в том виде, в каком вы его видите, вы можете получить доступ к собственному типу коллекции базовых драйверов базового узла через .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 изменить свой документ.

Посмотрите на Virtuals in Mongoose http://mongoosejs.com/docs/guide.html

Вы могли бы сделать что-то вроде:

someSchema.virtual('text').get(function() {
    return this.DisplayText;
}
Другие вопросы по тегам