2

これに関連する質問をしましたが、マングースの集約フレームワークに新たな疑問が生じました。たとえば、次のスキーマがあります。

var userschema = new mongoose.Schema({

   user: String,
   pass: String,
   following: [String],
   imagen: [{ 

              title: String,
              date: { type: Date, default: Date.now },
              name: String,
              author: String,

           }],


});

そして、これは Aggregation Framework を使用したコードです。

app.get('/home', middleware.yeses, function (req, res){

 usermodel.findOne({ user: req.session.user }, function (err, user){

 model.aggregate([

       {$match: { _id : '50f5c7265838530000000006' }},
       {$unwind: '$imagen'},          
       {$sort: {'imagen.date': 1}}

    ], function (err, imagenes){

        if (err) throw err;

        console.log(imagenes);

        res.send('foo');

    });
   });
  });

imagesたとえば、次のような imagen スキーマだけをコンソールに表示しようとしています。

{  title: 'footitle',
   name: 'foophoto.png',
   date: Tue Jan 1 2013 22:32:12 GMT+0100 (CET),
   author: 'foouser'  }

そして、日付順に並べられたすべての imagen スキーマを取得します。

ユーザーのスキーマにある次の配列には_id、実際のユーザーがフォローしているユーザーの が含まれています。したがって、 では、{$match: { _id : '50f5c7265838530000000006' }},フォローしているユーザーの画像のみを取得します。問題は、このコードを実行すると、[]取得した画像の配列が空であるため、コードが機能しないということです。これは、フォローしているユーザーが写真をアップロードしているためです。

これを削除する{$match: { _id : '50f5c7265838530000000006' }}と、すべてのユーザーとそのイメージが取得されますが、イメージ スキーマだけではなく、ユーザー スキーマ全体が取得されます。

だから、私が望むのは、私がフォローしているユーザーのすべての画像を日付順に並べて取得することです。これに対する解決策はありますか?

よろしくお願いします!

4

1 に答える 1