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()、標準のモンク コレクション オブジェクトのように promise オブジェクトにラップされないことに注意してください。しかし、少なくともこれは、ドキュメントにアクセスし、それを使用$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 に答える