MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách lọc dữ liệu giữa hai thời điểm từ hh:mm đến hh:mm trong mongoDB

Bạn có thể sử dụng $ dateToString toán tử để chiếu trường chuỗi thời gian có định dạng HH:MM mà sau đó bạn có thể thực hiện so sánh chuỗi trực tiếp trong $ match truy vấn:

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

Một cách tiếp cận hiệu quả hơn sẽ liên quan đến một đường dẫn duy nhất sử dụng $ redact toán tử như sau:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi kết nối Mongodb bên trong vùng chứa docker

  2. Mongodb - loại bỏ các trường rỗng một cách đệ quy?

  3. Chuyển đổi BSON sang JSON bằng API Java của trình điều khiển MongoDB

  4. Làm cách nào để chiếu các giá trị đã cập nhật chỉ bằng cách sử dụng findOneAndUpdate trong Mongoose mảng được nhúng?

  5. Mongo DB:Làm thế nào để sao chép Tài liệu từ một bộ sưu tập và thêm nó dưới dạng một trường vào một tài liệu liên quan từ một bộ sưu tập khác?