sql >> データベース >  >> RDS >> Mysql

Mongodb:ISODate形式の時間に基づくクエリ

    1つのアプローチは、集約フレームワークを使用することです。 、特に $ redact ドキュメントとそのサブドキュメント内の値に基づいてコンテンツのドキュメントストリームを削除する演算子。ブール式の結果に応じて、ドキュメントをストリームから削除したり、サブドキュメントもチェックされた後にストリームに含めたり、完全にストリームに渡したりすることができます。 $ redactの背後にある考え方 ストリームから機密情報を簡単に削除できるようにすることです。

    あなたの場合、基準式は $ cond 演算子と $ and 比較演算子を使用して時間範囲間の論理積を表すブール演算子 $ gt および $ lt > $ hour dateの時間を返す日付演算子 フィールドは0から23までの数値です。したがって、最終的な集計は次のようになります。

    db.collection.aggregate([
        {
            "$redact": {
                "$cond": {
                    "if": { 
                        "$and": [
                            { "$gt": [ {"$hour": "$date"}, 4] },
                            { "$lt": [ {"$hour": "$date"}, 8] }
                        ]                 
                    },
                    "then": "$$KEEP",
                    "else": "$$PRUNE"
                }
            }        
        }
    ])
    

    サンプル出力:

    /* 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
    }
    



    1. SQLServerでGUIを使用して列を変更する方法または変更スクリプトを生成する方法-SQLServer/T-SQLチュートリアルパート38

    2. MySQLのcsvテーブルをインポートするときにUTF8文字列が無効です

    3. 合計に達するまで選択する方法

    4. MySQLが昨日の日付を選択