1

これはコードです:

usermodel.findOne({"imagen._id": req.params.id }, {imagen: 1}, function (err, imagen){

    if(err) throw err;
    console.log(req.params.id + '\n');
    console.log(imagen);

    res.send(imagen);

});

そして、これはスキーマです:

var userschema = new mongoose.Schema({

  user: String,
  imagen: [{ 

              title: String,
              name: String,
              author: String,


           }]

});

私は次のような出力を得ようとしています:

{  title: 'DQ monstes',
   name: 'fooname.png',
   author: 'fooauthor',
}

しかし、私はこれを取得します:

{ _id: 50f41ccff405ef73c4000006,
imagen: 
 [ { title: 'Pokemon',
   name: 'random.png',
   author: 'fooauthor',
},
  { title: 'DQ monstes',
    name: 'fooname.png',
    author: 'fooauthor',
}

_id冒頭の は で探しreq.params._idている ですusermodel.findOne。そして、私もこのエラーを受け取ります:

/Users/rodrie/Documents/node/node_modules/mongoose/lib/utils.js:434
     throw err;
           ^
TypeError: Cannot read property '_id' of null
4

1 に答える 1

0

はい、検索は常に完全なドキュメントを返します。返された結果の抽出部分を変更する必要がある場合は、集約フレームワークhttp://docs.mongodb.org/manual/applications/aggregation/を使用する必要があります。ただし、集約フレームワークはカーソルを返さないことに注意してください。16MB を超えるドキュメントを反復処理する場合、最大 16MB の結果を含む単一のドキュメントが返されるため、役に立ちません。

于 2013-01-17T10:16:51.863 に答える