Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mongodb:Consulta com base na hora no formato ISODate


Uma abordagem é usar a estrutura de agregação , em particular o $redact operador que retira o fluxo do documento de conteúdo com base em valores dentro do documento e seus subdocumentos. Dependendo do resultado de uma expressão booleana, um documento pode ser removido do fluxo, ser incluído no fluxo após seus subdocumentos também terem sido verificados ou apenas passado completo para o fluxo. A ideia por trás do $redact é facilitar a remoção de informações confidenciais do fluxo.

No seu caso, a expressão de critérios usa o $cond operador e $and operador booleano para expressar o AND lógico entre os intervalos de tempo com os operadores de comparação $gt e $lt . Use o $hour operador de data para retornar a hora do data campo como um número entre 0 e 23. Assim, sua agregação final fica assim:
db.collection.aggregate([
    {
        "$redact": {
            "$cond": {
                "if": { 
                    "$and": [
                        { "$gt": [ {"$hour": "$date"}, 4] },
                        { "$lt": [ {"$hour": "$date"}, 8] }
                    ]                 
                },
                "then": "$$KEEP",
                "else": "$$PRUNE"
            }
        }        
    }
])

Saída de amostra:
/* 0 */
{
    "result" : [ 
        {
            "_id" : ObjectId("56404450472fe25cc6b85886"),
            "date" : ISODate("2015-11-09T05:58:19.474Z")
        }, 
        {
            "_id" : ObjectId("56404450472fe25cc6b85887"),
            "date" : ISODate("2014-10-25T07:30:00.241Z")
        }
    ],
    "ok" : 1
}