В 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;
}