Usa aggregazione su name
e ottenere name
con count > 1
:
db.collection.aggregate(
{"$group" : { "_id": "$name", "count": { "$sum": 1 } } },
{"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } },
{"$project": {"name" : "$_id", "_id" : 0} }
)
per ordinare i risultati di più almeno duplicato 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} }
)
da utilizzare con un altro nome di colonna di "nome", cambiare "$ nome" a "$ nome_colonna"
'" $ match ": {" _id ": {" $ ne ": null}' - non è necessario qui, poiché la seconda parte dell'istruzione sarebbe sufficiente a filtrare il risultato. Quindi, solo il controllo del gruppo che ha "contare> 1" andrà bene. – BatScream
Tks @BatScream. {"$ ne": null} esiste solo nel caso in cui 'name' sia null o non esista. Anche l'aggregazione conta nullo. – anhlc
Benvenuto. Ma allora perché controllare il campo '_id'. È sempre garantito che non sia nulla dopo l'operazione 'group'. – BatScream