sql >> データベース >  >> NoSQL >> MongoDB

mongoDBでhh:mmからhh:mmまでの2回のデータをフィルタリングする方法

    $ dateToString HH:MMの形式で時間文字列フィールドを射影する演算子 次に、 $ match クエリ:

    var filter = {};
    filter.strBillDate = { 
        "$gte": new Date(req.params.fromdate), 
        "$lt": new Date(req.params.todate)    
    };
    return Sales
        .aggregate([{
            $match: filter
        }, {
            "$project": {
                "strBillNumber": 1,
                "strBillAmt": 1,
                "store_id": 1,
                "strBillDate": 1,
                "time": { "$dateToString": { "format": "%H:%M", date: "$strBillDate" } }
            }
        }, {
            "$match": 
                { "time": { "$gte": "17:15", "$lte": "19:30" } }
        }])
        .exec(function(err, salesdata) {
            if (!err) {
                return res.send(salesdata);
            }
        });
    

    より効率的なアプローチには、 $ redact 演算子は次のとおりです:

    Sales.aggregate([
        { 
            "$redact": { 
                "$cond": [
                    { 
                        "$and": [  
                            { "$gte": [ "$strBillDate", new Date(req.params.fromdate) ] },
                            { "$lt": [ "$strBillDate", new Date(req.params.todate) ] },
                            { 
                                "$gte": [ 
                                    { 
                                        "$dateToString": { 
                                            "format": "%H:%M", 
                                            "date": "$strBillDate" 
                                        } 
                                    }, 
                                    "17:15"
                                ] 
                            },
                            { 
                                "$lte": [ 
                                    { 
                                        "$dateToString": { 
                                            "format": "%H:%M", 
                                            "date": "$strBillDate" 
                                        } 
                                    }, 
                                    "19:30" 
                                ] 
                            }
                        ]
                    },
                    "$$KEEP",
                    "$$PRUNE"
                ]
            }
        }
    ]).exec(function(err, salesdata) {
        if (!err) {
            return res.send(salesdata);
        }
    });
    



    1. MongoDB:それぞれの異なる値がいくつあるかを数えますか?

    2. マングース-スコアまたは重みに基づいて3つのフィールドでテキストを検索します

    3. mongodbのオブジェクトの配列を更新しています

    4. IDではないフィールドをマングースモデルに入力します