Distinguir, contar, agrupar y deduplicar para consultas avanzadas en mongo
(1) Conteo
Función: Simplemente cuenta el número de documentos que cumplen ciertas condiciones en la colección.
Uso: db.collection.count(
Descripción del parámetro: donde
Por ejemplo:
db . collection . find(& lt ;Query>).limit();
db .colección .find(<Query>).skip();
(2)Único
Función : Se utiliza para copiar pines de documentos en una colección.
Uso: db, collection.distinct (campo, consulta)
Descripción del parámetro: el campo es un campo de deduplicación, que puede serlo. es un nombre de campo único o un nombre de campo anidado; la consulta es una condición de consulta y puede estar vacía;
Por ejemplo:
db.collection.distinct("usuario", { " age ":{ $ gt:28 } }); // Se utiliza para consultar diferentes nombres de usuario cuya edad es mayor a 28 años.
Además del uso anterior, también se pueden utilizar los siguientes otros métodos. :
db.run comando({"distinct":"nombre de la colección","key":"distinctfied","query":<query>})
Nombre de la colección: deduplicación estadísticas El nombre de la colección, campo distinto: campo de deduplicación,
Por ejemplo:
La diferencia entre estos dos métodos: el primer método es la encapsulación del segundo método, el primero El método solo devuelve el valor del campo establecido después de las estadísticas, mientras que el segundo método devuelve tanto el valor del campo establecido como la información detallada durante las estadísticas
(3) Grupo
Función: se utiliza para proporcionar requisitos estadísticos más ricos que contar y distinguir, las funciones js se pueden usar para controlar la lógica estadística
Uso: db.collection.group (clave, reducir, inicial}, { día del mes: " grupo: { _ id :" sum:1 } }, { $ sort:{ con:1 } });
Los grupos están agrupados por hora (formato de hora)
blogs.com /yuechaotian/archive /2013/02/22/2922268.html
Ajuste de rendimiento de Mapreduce
blogs com/sosoft/archive/2013/12/08/3463830 html p>
DB. ejecutar comando ({ distinto: "registros de consumidores", clave: "id de usuario"}): la deduplicación de valores clave es similar a seleccionar identificadores de usuario distintos de los registros de consumidores en mysql.
DB. RUNCommand ({distinct: "registro del consumidor", clave: "id de usuario"}). valores. Longitud: encuentre la cantidad de registros después de la deduplicación, similar al recuento de selección (identificación de usuario distinta) de registros de consumidores en mysql.
DB.
ejecutar comando ({ distinto: " registros de consumidores ", clave: " ID de usuario ", consulta: { acto: " cargo "}}): busque la cantidad de registros después de la deduplicación, similar a seleccionar una identificación de usuario distinta de los consumidores donde actuar en mysql = "cargar".
Comando de ejecución de base de datos (
...{
...Grupo:
...{
...ns: "prueba 2", #Nombre de colección
...Palabra clave: {iname:true}, #Campo de grupo
...inicial: {dd :0}, #Presione para inicializar el valor
...El valor devuelto por la función
...{
. .dd=doc.iage+prev.dd #
...}
...
...}
...}
...)
Solución para almacenar valores en forma de cadena:
Comando de ejecución de base de datos (
{
Grupo:
{
ns: "Registro de Consumo",
clave: {act:true},
Inicial: {ct:100, tt:0},
$reduce: función (doc, prev)
{
},
}
}
)
Eliminar peso
1, consultar directamente con una declaración distinta, esta consulta devolver todos los datos consultados al usuario y luego calcular la suma de los conjuntos de resultados de la consulta (consumo de memoria, consumo de tiempo).
var len = db estudiante . distinto(" nombre ", {"edad": 18}). Longitud;
Imprimir (lente)
Nota: Al realizar consultas utilizando este método, si el conjunto de resultados de la consulta es mayor que 16 M, la consulta fallará. La información del error es la siguiente:
{"message": "distinct falló: MongoError: distintivo es demasiado grande, límite superior de 16 MB", "stack": "script:1:20"} p>
2. Utilice funciones de agregación para agrupar resultados estadísticos varias veces y finalmente devolver los resultados de agregación al usuario.
db.student.aggregate(
{ proyecto:{"name":true}},
{ nombre"}},
{ sum:1}}}
])
Nota: cuando los datos de la consulta son grandes, el error de consulta anterior no ocurrirá y la consulta consumirá menos memoria y El consumo de tiempo es mejor que la consulta anterior.
Ps: si especifica la identificación como un elemento combinado, el efecto es equivalente a eliminar el elemento combinado ya que la identificación no se repetirá.
Si necesita eliminar la colección de otros campos ahora, puede usar la palabra clave $push
//Agrupar por nombre y género
//Agrupar el nombre, género, la edad se coloca debajo del documento correspondiente para formar una matriz
Database.Student.Aggregation(
[
{
Nombre". , Género: "Push: "Push: "Push:" $edad" }
}
}
]
). forEach(function(x){
Inserción temporal de base de datos (
{
Nombre: x.name,
Sexo. : x. sexo,
Edad: x .edad
}
);
});