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

MongoDB4.2データベースから重複を削除します

    これは私の入力コレクションですdups 、いくつかの重複データ(k11 および22 ):

    { "_id" : 1, "k" : 11 }
    { "_id" : 2, "k" : 22 }
    { "_id" : 3, "k" : 11 }
    { "_id" : 4, "k" : 44 }
    { "_id" : 5, "k" : 55 }
    { "_id" : 6, "k" : 66 }
    { "_id" : 7, "k" : 22 }
    { "_id" : 8, "k" : 88 }
    { "_id" : 9, "k" : 11 }
    

    クエリは重複を削除します

    db.dups.aggregate([
      { $group: { 
            _id: "$k",
            dups: { "$addToSet": "$_id" }, 
            count: { "$sum": 1 } 
      }}, 
      { $project: { k: "$_id", _id: { $arrayElemAt: [ "$dups", 0 ] } } }
    ] )
    =>
    { "k" : 88, "_id" : 8 }
    { "k" : 22, "_id" : 7 }
    { "k" : 44, "_id" : 4 }
    { "k" : 55, "_id" : 5 }
    { "k" : 66, "_id" : 6 }
    { "k" : 11, "_id" : 9 }
    

    ご覧のとおり、次の重複データは削除されます

    { "_id" : 1, "k" : 11 }
    { "_id" : 2, "k" : 22 }
    { "_id" : 3, "k" : 11 }
    


    結果を配列で取得します:

    var arr = db.dups.aggregate([ ...] ).toArray()
    

    arr ドキュメントの配列があります:

    [
            {
                    "k" : 88,
                    "_id" : 8
            },
            {
                    "k" : 22,
                    "_id" : 7
            },
            {
                    "k" : 44,
                    "_id" : 4
            },
            {
                    "k" : 55,
                    "_id" : 5
            },
            {
                    "k" : 66,
                    "_id" : 6
            },
            {
                    "k" : 11,
                    "_id" : 9
            }
    ]
    



    1. pymongoを使用してmongodbのObjectIdで検索

    2. マングースは、複数のコレクションを1つの配列にマップする方法を集約します

    3. mongodbで文字列の長さを選択します

    4. PHPを使用してmongodbDateをクエリする方法