Wykorzystanie agregacji na name
i dostać name
z count > 1
:
db.collection.aggregate(
{"$group" : { "_id": "$name", "count": { "$sum": 1 } } },
{"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } },
{"$project": {"name" : "$_id", "_id" : 0} }
)
Aby posortować wyniki według najbardziej najmniej duplikować ES:
db.collection.aggregate(
{"$group" : { "_id": "$name", "count": { "$sum": 1 } } },
{"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } },
{"$sort": {"count" : -1} },
{"$project": {"name" : "$_id", "_id" : 0} }
)
używać z inną nazwą kolumny niż "nazwa", zmiana "$ name" na "$ COLUMN_NAME"
'" $ match ": {" _id ": {" $ ne ": null}' - jest tutaj niepotrzebne, ponieważ wystarczy druga część instrukcji, by filtrować wynik. Tak więc zrobi to tylko sprawdzenie, czy grupa ma 'count> 1'. – BatScream
Tks @BatScream. {"$ ne": null} jest na wszelki wypadek "nazwa" ma wartość null lub nie istnieje. Agregacja również będzie liczyła się null. – anhlc
Witamy. Ale po co sprawdzać pole '_id'. Po operacji 'group' zawsze jest gwarantowane, że nie ma ona wartości null. – BatScream