В MongoDB count
командата aggregation отчита броя на документите в колекция или изглед.
Връща документ, който съдържа броя, както и състоянието на командата.
Пример
Да предположим, че имаме колекция, наречена pets
със следните документи:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
Можем да използваме следната заявка, за да върнем броя на документите в колекцията:
db.runCommand( { count: "pets" } )
Резултат:
{ "n" : 7, "ok" : 1 }
Документацията на MongoDB всъщност препоръчва да не се използва count
команда и нейните обвиващи методи без предикат на заявка. Това е така, защото когато се изпълнява без предикат на заявка, той връща резултати въз основа на метаданните на колекцията, което може да доведе до приблизителен брой.
Пребройте резултата от заявка
Можете да преброите резултата от заявка, като използвате следния формуляр.
Пример:
db.runCommand( {
count: "pets",
query: { type: "Dog" }
} )
Резултат:
{ "n" : 4, "ok" : 1 }
В този пример можем да видим, че в колекцията има четири кучета.
Нека проверим броя на друга заявка. Този път ще разберем колко домашни любимци имат тегло, по-голямо от определено количество.
db.runCommand( { count:'pets',
query: { weight: { $gt: 10 } }
} )
Резултат:
{ "n" : 3, "ok" : 1 }
Ограничете броя
Можете да използвате limit
параметър, за да посочите максимален брой документи за броене.
Пример:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
limit: 3
} )
Резултат:
{ "n" : 3, "ok" : 1 }
Видяхме преди това, че всъщност има 4 кучета, но в този пример го ограничихме да брои максимум 3.
Ако лимитът е по-висок от действителния брой, резултатът няма да бъде повлиян от limit
аргумент.
Пример:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
limit: 10
} )
Резултат:
{ "n" : 4, "ok" : 1 }
Пропускане на документи
Можете да използвате skip
параметър за пропускане на определен брой документи преди броене.
Пример:
db.runCommand( {
count: "pets",
query: { type: "Dog" },
skip: 2
} )
Резултат:
{ "n" : 2, "ok" : 1 }
Оттегляне
Имайте предвид, че документацията на MongoDB посочва следното:
Драйверите на MongoDB, съвместими с функциите 4.0, отменят съответния курсор и колекция
count()
API (които изпълняватcount
команда) в полза на нови API, които съответстват наcountDocuments()
иestimatedDocumentCount()
. За конкретните имена на API за даден драйвер вижте документацията за API на драйвера.
Повече информация
count
командата включва други полета, като hint
, comment
, readConcern
и collation
.
Вижте документацията на MongoDB за повече информация.