MongoDBクエリーテーブルの複数フィールドは重複データを組み合わせて削除します.

1930 ワード

参考:https://blog.csdn.net/liu911025/article/details/80882270 https://blog.csdn.net/qq_233375733/articale/detail/83147854
mongodb(js)美化:https://beautifier.io/
1.クエリーテーブルの同じフィールドは、titleとcurrentDayの組み合わせで照会し、マッチング数が1より大きいデータ
db.getCollection('biddings').aggregate([{
        '$group': {
            '_id': {
            'title': '$title',
            'currentDay': '$currentDay'
            },
            'uniqueIds': {
                '$addToSet': '$_id'
            },
            'count': {
                '$sum': 1
            }
        }
    },
    {
        '$match': {
            'count': {
                '$gt': 1
            }
        }
    }
], {
    allowDiskUse: true
})
2.表の同じデータクエリと削除文を削除し、削除文の後にforEachサイクルを追加します.
db.getCollection('biddings').aggregate([{
        '$group': {
            '_id': {
            'title': '$title',
            'currentDay': '$currentDay'
            },
            'uniqueIds': {
                '$addToSet': '$_id'
            },
            'count': {
                '$sum': 1
            }
        }
    },
    {
        '$match': {
            'count': {
                '$gt': 1
            }
        }
    }
], {
    allowDiskUse: true
}).forEach(function(doc) {
    doc.uniqueIds.shift();
    db.getCollection('biddings').remove({
        _id: {
            $in: doc.uniqueIds
        }
    });
})
説明:
1.  bqyId       , $group           ,  $addToSet          _id  
2.  $match      1   
3.doc.uniqueIds.shift();             ;             _id,                
4.  forEach    _id    
 $addToSet                            。           ,$addToSet  ,      。