Как вложить результаты mogodb в одну и ту же коллекцию, используя агрегат $ lookup и $ unwind - PullRequest
0 голосов
/ 12 июня 2019

У меня есть коллекции Product и Rateplan.Я использовал агрегатное раскручивание и поиск MongoDB, чтобы получить желаемую вложенность, но не могу правильно сгруппировать группу.

    productSchema = {
        name:{
            type:String,
        },
        baseprice:{
            type:Number,
            get:function(num) { return (num / 100).toFixed(2); },
            set:function(num) { return num * 100; }
        },
    }

    rateplanSchema = {
        startdate:{type:Date},
        enddate:{type:Date},
        name:{type:String},
        pricederived:{
            type:String,
            enum: ['NO','PP', 'MP', 'PN', 'MN'], 
            // Plus Minus
            // Percent Number
            // NO means dont apply derived and use strait price
        },
        price:{
            type:Number,
            get:num => (num / 100).toFixed(2),
            set:num => num * 100
        },
        productcategory:{
            type: mongoose.Schema.Types.ObjectId,
            ref: Category
        },
        products:[ {
            type: mongoose.Schema.Types.ObjectId,
            ref: Product
        }],
    }

результат, который я пытаюсь получить, - это когда дата покупки продукта попадает между датами тарифных планов.

    Product: [{
                 name: "headphone"
                 baseprice: "20"
                 nestedplan: [
                             {
                                startdate: "15-04-2019"
                                enddate: "31-04-2019"
                                name: "Summer Sale"
                                pricederived: "MN"
                                price: "5"
                             }
                             ,
                             ,
                ]
              }
              ,
              ,
    ]
...