首页 > 解决方案 > 使用 $lookup 处理对象 id 聚合的管道

问题描述

Users.aggregate([{ $geoNear: { near: {type: "Point" , coordinates: [lng,lat] } , distanceField: "dist.calculated" , maxDistance: 2000000 ,query: { deleted: '0' , _id: { $ne: user_result._id}}}}, { $lookup: {from: 'images' , let: { user_connected: '$_id' } , pipeline:[ {
                         $match: {
                             $expr:{
                                       $eq: [ "$user" , "$$user_connected" ]
                             }
                         },
                        } ] , as: 'images'}} ,{ $skip: skip },{ $limit: perpage}]).allowDiskUse(true).exec(function (err, result) {
                         if(err) {
                            return res.status(400).json({success: 202 , message: "Database Error." , result: err});
                         }
                       if(isset(result) && !empty(result)){
                         return res.status(200).json({success: 200 , message: "Users Data." , result: result});
                       }else{
                        return res.status(400).json({success: 205 , message: "No Records Found." , result: []});
                       }
                    });
                    
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
var Schema = mongoose.Schema;
var ImagesSchema = new Schema({
        name: { type: String  , required: true},
        user: [{ type: Schema.Types.ObjectId, ref:'users' , default: '' }],
        status: { type: String , default: ''} ,
        expireTime: { type:  Date , default: new Date()}
    },
    {timestamps: true})
    //.index({ "createdAt": 1 }, { expireAfterSeconds: 86400 });
    console.log("Create Index if collection droped")

var images = mongoose.model('images', ImagesSchema);

module.exports = images;

我正在创建一个将用户模型连接到图像模型的管道,但它没有从图像模型中获取所有图像。我正在将我的用户模型连接到图像以显示在用户列表中,但它不起作用。谁能帮我?

标签: node.jsmongodbmongoosemongodb-query

解决方案


推荐阅读