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

別のフィールドmongodbでグループ化された個別の値を検索する

    集約パイプラインを作成する必要があります

    • $match -条件でドキュメントをフィルタリングします
    • $group -キーフィールドでドキュメントをグループ化します
    • $addToSet -固有の要素を集約します
    • $project -必要な形式でプロジェクトする
    • $reduce -配列の配列を$concatArraysで配列に減らします

    集計クエリ

    db.tt.aggregate([
        {$match : {"time_broadcast" : "09:13"}}, 
        {$group : {"_id" : "$page_id", "category_list" : {$addToSet : "$category_list"}}}, 
        {$project : {"_id" : 0, "page_id" : "$_id", "category_list" : {$reduce : {input : "$category_list", initialValue : [], in: { $concatArrays : ["$$value", "$$this"] }}}}}
    ]).pretty()
    

    結果

    { "page_id" : "123456", "category_list" : [ "news", "updates" ] }
    {
            "page_id" : "1234",
            "category_list" : [
                    "sport",
                    "handball",
                    "football",
                    "sport"
            ]
    }
    

    $sortを追加できます page_idによる 必要に応じてパイプライン




    1. Node.jsを介してMongoDBにドキュメントを挿入するときにエラーが発生しました

    2. 引数はnodejsの文字列である必要があります

    3. MongoクエリをLaravel、ネストされたelemMatchに変換する

    4. MongoDBネストされた配列の交差クエリ