Devuelve el numero de documentos en una colección.
Sintaxis:
Integer count(Document... doc)
Integer count(Filter filter)
Parámetros:
Document... doc: Es opcional y se utiliza cuando deseamos contar documentos en base a una determinada condición.
Ejemplos MongoDB:
Contamos con el documento
Copy {
"_id" : ObjectId("58841d5ab2a08a0eabd8a85b"),
"idcontinente" : "xe",
"continente" : "Xte",
"planetas" : {
"idplaneta" : "marte"
}
}
{
"_id" : ObjectId("58842978b2a08a13cb01a599"),
"idcontinente" : "am",
"continente" : "America",
"planetas" : {
"idplaneta" : "tierra"
}
}
{
"_id" : ObjectId("58842a4db2a08a0b431541f5"),
"idcontinente" : "xe",
"continente" : "Xet",
"planetas" : {
"idplaneta" : "marte"
}
}
Cuenta todos los documentos de la coleccion
Copy Integer n = continentesRepository.count();
Resultado: 3
Contar los elementos en base a un filtro
Copy Integer n = continentesRepository.count(new Document("idcontiente","am");
Resultado:1
Contar documentos referenciados
Cuenta la cantidad de documentos en la colección continentes que pertenecen al planeta tierra. En documentos referenciados.
Copy Integer n = continentesRepository.count(new Document("planetas",new Document("idplaneta","tierra")));
Resultado: 2
Contar documentos embebidos
Si se tiene un documento embebido que se usa en el beans @Embedded se debe indicar el filtro en base al formato colección.atributo,valor. Para filtrar por planetas usamos : "planetas.idplaneta","marte"
Copy Continentes:
{ "_id" : ObjectId("58842f11b2a08a171396fc00"),
"idcontinente" : "af",
"continente" : "Africa",
"planetas" : {
"idplaneta" : "marte",
"planeta" : "Marte"
} }
Entity
Copy @Getter
@Setter
public class Continentes {
@Id
private String idcontinente;
private String continente;
@Embedded
private Planetas planetas;
}
Controller
Copy Integer n = continentesRepository.count(new Document("planetas.idplaneta", "marte")) ;
Resultado: 1
Contar en una lista de documentos embebido
Deseamos buscar los documentos de continentes en el que este embebido el planeta marte en cualquiera de sus documentos embebidos.
Copy db.continentes.find().pretty()
{
"_id" : ObjectId("5884f516b2a08a0ceb287e99"),
"idcontinente" : "eu",
"continente" : "Europa",
"planetas" : [
{
"idplaneta" : "marte",
"planeta" : "Marte",
"fecha" : ISODate("2017-01-21T21:21:42.044Z")
},
{
"idplaneta" : "tierra",
"planeta" : "Tierra",
"fecha" : ISODate("2017-01-21T21:21:42.044Z")
}
]
}
{
"_id" : ObjectId("5884f585b2a08a0da194491d"),
"idcontinente" : "am",
"continente" : "America",
"planetas" : [
{
"idplaneta" : "marte",
"planeta" : "Marte",
"fecha" : ISODate("2017-01-21T21:21:42.044Z")
}
]
}
Entity
Copy @Getter
@Setter
public class Continentes {
@Id
private String idcontinente;
private String continente;
@Embedded private List planetas;
@Override
public String toString() {
return "Continentes{" + "idcontinente=" + idcontinente + ", continente=" + continente + ", planetas=" + planetas + '}';
}
}
Controller
Copy Integer n = continentesRepository.count(new Document("planetas.idplaneta", "tierra")) ;
Resultado: 2
Count con FILTER
Cuenta los documentos en la coleccion en base a un filtro.
Almacen sea al logeado y que el idestatusfactura != 5
Copy Bson filter = Filters.and(Filters.eq("almacen.idalmacen",loginController.getAlmacen().getIdalmacen()), Filters.ne("estatusfactura.idestatusfactura", 5));
totalFacturas = facturaRepository.count(filter);