update positional operator arrayfilters array addtoset mongodb

positional - ¿Cómo agregar en una gran matriz en mongoDB?



mongodb positional operator (1)

Prueba esto:

db.users.aggregate( [ { $unwind : "$key" }, { $group : { _id : "$key", number : { $sum : 1 } } }, { $sort : { number : -1 } }, { $limit : 10000 }, { $out:"result"}, ], { allowDiskUse:true, cursor:{} } );

Luego encuentra el resultado por db.result.find() .

Tengo un mongodb de unos 400gb. Los documentos contienen una variedad de campos, pero la clave aquí es una matriz de ID.

Así que un archivo json podría verse así

{ "name":"bob" "dob":"1/1/2011" "key": [ "1020123123", "1234123222", "5021297723" ] }

La variable focal aquí es "clave". Hay aproximadamente 10 mil millones de claves en total en 50 millones de documentos (por lo que cada documento tiene aproximadamente 200 claves). Las teclas pueden repetirse, y hay alrededor de 15 millones de teclas ÚNICAS.

Lo que me gustaría hacer es devolver las 10,000 claves más comunes. Pensé que el agregado podría hacer esto, pero estoy teniendo muchos problemas para que funcione. Aquí está mi código:

db.users.aggregate( [ { $unwind : "$key" }, { $group : { _id : "$key", number : { $sum : 1 } } }, { $sort : { number : -1 } }, { $limit : 10000 } ] );

¿Alguna idea de lo que estoy haciendo mal?