Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database MongoDB聚合查找管道查询_Database_Mongodb_Mongoose_Nosql - Fatal编程技术网

Database MongoDB聚合查找管道查询

Database MongoDB聚合查找管道查询,database,mongodb,mongoose,nosql,Database,Mongodb,Mongoose,Nosql,我正在寻找有关MongoDB查找聚合查询的帮助 我正在尝试加入两个系列,即“咖啡馆”和“邮票”。在查找过程中,我希望匹配给定咖啡馆的戳记,然后进一步排序并将结果限制为10 相关的id字段是:“\u id”用于cafe集合,而“cafeId”用于邮票集合 下面是我想到的,但是,在尝试通过ID在给定集合之间进行匹配时,似乎出现了问题。我相信这可能与Mongo不把它们当作ObjectID有关,但我不确定 db.cafe.aggregate([ { $lookup: {

我正在寻找有关MongoDB查找聚合查询的帮助

我正在尝试加入两个系列,即“咖啡馆”和“邮票”。在查找过程中,我希望匹配给定咖啡馆的戳记,然后进一步排序并将结果限制为10

相关的id字段是:“\u id”用于cafe集合,而“cafeId”用于邮票集合

下面是我想到的,但是,在尝试通过ID在给定集合之间进行匹配时,似乎出现了问题。我相信这可能与Mongo不把它们当作ObjectID有关,但我不确定

db.cafe.aggregate([
      {
        $lookup: {
          from: "stamp",
          as: "stamps",
          let: {
            id: "$_id",
            name: "$name"
          },
          pipeline: [
            { $project: { id:1, cafeId: { $toObjectId: "$$id"}, name:1 } },
            { $match: { expr: { $eq: ["$$cafeId", "$cafeId"] } } },
            { $sort: { stampDate: -1 } },
            { $limit: 10 }
          ]
        }
      }
    ]);

设法想出了如何实现我想要的。把这个留给其他试图达到同样结果的人

db.cafe.aggregate([
  {
    $lookup: {
      from: "stamp",
      as: "stamps",
      let: {
        id: "$_id",
        name: "$name" //All cafes variables,
      },
      pipeline: [
        {
          $project: {
            cafeId: 1,
            stampDate: 1,
            stampId: 1,
            cafeId: 1,
            status: 1,
            userId: { $toObjectId: "$userId" }
          }
        },
        {
          $match: {
            $expr: {
              $and: [
                {
                  $eq: [{ $toObjectId: "$$id" }, { $toObjectId: "$cafeId" }]
                },
                {
                  $eq: [
                    { $toObjectId: "$userId" },
                    mongoose.Types.ObjectId(req.user._id)
                  ]
                }
              ]
            }
          }
        }
      ]
    }
  }
]);