Javascript 在NodeJS中,如何使用不同的字段名从mongodb输出结果?

Javascript 在NodeJS中,如何使用不同的字段名从mongodb输出结果?,javascript,node.js,mongodb,aggregation-framework,monk,Javascript,Node.js,Mongodb,Aggregation Framework,Monk,我使用nodejs查询mongodb,并希望输出带有自定义字段名的json 例如,来自MongoDB的原始json可能 {id:1, text:"abc"} 我想把它输出为 {ObjectID:1, DisplayText:"abc"}; 我知道MongoDB的聚合框架中有$project操作符,但不知道如何在NodeJS中使用它们 我使用的mongodb nodejs包是 var mongo = require('mongodb'); var monk =

我使用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');

感谢您对这方面的任何建议

看看猫鼬中的虚拟场景

你可以这样做:

someSchema.virtual('text').get(function() {
    return this.DisplayText;
}

如果使用的是monk,则可以通过所选集合对象上的
.col
访问器访问基础节点本机驱动程序集合类型:

var db=require('monk')('localhost/test'))
,collection=db.get('example');
集合(
[
{“$project”:{
“_id”:0,
“ObjectID”:“$\u id”,
“DisplayText”:“$text”
}}
],
函数(错误、结果){
log(JSON.stringify(result,未定义,4));
}
);

请注意,以这种方式检索的方法不会像标准monk集合对象那样包装在promise对象中。但这至少向您展示了如何访问和使用以重新塑造您的文档。

也许这会让您开始:谢谢,John。您知道要使用哪个mongodb包吗?我使用了类似的实现并得到了TypeError:Object#没有方法“collection”。谢谢,尼尔。虽然我得到了一个不同的错误:“聚合结果超过了最大文档大小(16MB)”,但我认为这应该是我应该处理的另一个问题。@user3492125目前的情况是,它试图将整个集合输出到一个数组中,因此,如果要向客户端发送响应,则可能不需要整个集合。还有其他方法,但可能目前最具体的是管道操作符,以减少结果。至少你现在知道如何与monk一起使用聚合。如果你有其他问题的话,可以随意把它们贴到stack overflow上。尼尔,你的头脑很敏锐。这正是我之前错过的。非常感谢。