これに関連する質問をしましたが、マングースの集約フレームワークに新たな疑問が生じました。たとえば、次のスキーマがあります。
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' }}
と、すべてのユーザーとそのイメージが取得されますが、イメージ スキーマだけではなく、ユーザー スキーマ全体が取得されます。
だから、私が望むのは、私がフォローしているユーザーのすべての画像を日付順に並べて取得することです。これに対する解決策はありますか?
よろしくお願いします!