Node.js 带有mongoose和数组的聚合框架

Node.js 带有mongoose和数组的聚合框架,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我提出了一个与此相关的问题,但我对mongoose的聚合框架有一个新的疑问。例如,我有以下模式: var userschema = new mongoose.Schema({ user: String, pass: String, following: [String], imagen: [{ title: String, date: { type: Date, default: Date.now },

我提出了一个与此相关的问题,但我对mongoose的聚合框架有一个新的疑问。例如,我有以下模式:

var userschema = new mongoose.Schema({

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

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

           }],


});
这是聚合框架的代码:

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');

    });
   });
  });
我正在尝试在控制台中获取所有的
图像
,例如,只有imagen模式:

{  title: 'footitle',
   name: 'foophoto.png',
   date: Tue Jan 1 2013 22:32:12 GMT+0100 (CET),
   author: 'foouser'  }
并获取所有imagen模式,按日期排序

用户架构中的以下数组包含实际用户所遵循的用户id。因此,使用
{$match:{{u id:'50f5c72658385300000000006'},
,我只得到我跟踪的用户的图像。问题是,当执行此代码时,我收到此
[]
,我得到的图像数组是空的,因此代码不起作用,因为我跟踪的用户上载了照片

当我删除这个
{$match:{{u id:'50F5C72658385300000000006'}}
时,我得到了所有的用户和他们的imagen,但我不仅得到imagen模式,我还得到了整个用户模式

所以,我想要的是获得所有的图片,我跟踪的用户的图片,按日期排序。有什么解决办法吗


谢谢你的预付款

原因是您将
\u id
字段作为字符串传递,而不是
ObjectID
。试试这个:

var ObjectID = require("mongodb").ObjectID;

// ...

model.aggregate([

  {$match: { _id : ObjectID('50f5c7265838530000000006') }},

  // ...

原因是您将
\u id
字段作为字符串而不是
ObjectID
传递。试试这个:

var ObjectID = require("mongodb").ObjectID;

// ...

model.aggregate([

  {$match: { _id : ObjectID('50f5c7265838530000000006') }},

  // ...