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

ISO日付をyyyy-mm-dd形式に変換します

    最初にデータリストをフラット化できる集計パイプラインを実行することを検討し、 $dateToString 次に、フラット化されたドキュメントを再グループ化して、目的の結果を取得します。

    上記は、3つの異なるパイプラインで表示できます。

    db.users.aggregate([
        { "$match": { "username": "xyz" } },
        { "$unwind": "$followers" },
        {
            "$project": {
                "username": 1,
                "count": "$followers.count",
                "date": { "$dateToString": { "format": "%Y-%m-%d", "date": "$followers.ts" } }
            }
        },
        {
            "$group": {
                "_id": "$_id",
                "username": { "$first": "$username" },
                "followers": { "$push": {
                    "count": "$count",
                    "date": "$date"
                }}
            }
        }
    ])
    

    MongoDB 3.4以降では、新しい $addFields $mapと一緒にパイプラインステップ 巻き戻しやグループ化を行わずに配列フィールドを作成するには:

    db.users.aggregate([
        { "$match": { "username": "xyz" } },    
        {
            "$addFields": {
                "followers": { 
                    "$map": { 
                        "input": "$followers", 
                        "as": "follower",
                        "in": { 
                            "count": "$$follower.count", 
                            "date": { 
                                "$dateToString": { 
                                    "format": "%Y-%m-%d", 
                                    "date": "$$follower.ts" 
                                }
                            } 
                        } 
                    } 
                }
            }
        }
    ])
    


    1. ClusterControlを補完するコミュニティのMongoDBツール

    2. findOneAndUpdateとfindOneAndReplaceの違いは何ですか?

    3. MongoDb 2.6.1エラー:17444-レガシーポイントが球面クエリの範囲外です

    4. MongoDBアグリゲーションパフォーマンス機能