sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB - Begränsa resultaten av en fråga

Returnera endast det antal dokument du behöver med limit() metod.

I MongoDB kan du använda limit() metod för att ange ett maximalt antal dokument som en markör ska returnera.

När du frågar efter en samling med db.collection.find() metod kan du lägga till limit() för att ange gränsen.

Exempel

Låt oss först göra en fråga utan en gräns (så att vi kan se hur många dokument som returneras):

Utan en begränsning

db.artists.find( { albums: { $exists: false }} )

Resultat:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

Med en gräns

OK, så låt oss begränsa resultaten till att säga tre dokument:

db.artists.find( { albums: { $exists: false }} ).limit(3)

Resultat:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }

I vår fråga använder vi $exists operatör för att kontrollera om det finns ett fält. I det här fallet utesluter vi de artister som har ett album fältet i dokumentet.

Detta kan lätt ändras till { $exists: true } för att endast inkludera de artister som har ett album fältet.

Lägg till skip() Metod

Du kan använda skip() metod för att hoppa till ett dokument inom markören. Med andra ord kan du styra var MongoDB börjar returnera resultaten.

db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)

Resultat:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }

Så du kan se att det hoppade över det första resultatet, men ändå returnerade 3 dokument.

Observera att skip() kan användas på vilken fråga som helst (inte bara de med limit() ).

Till exempel returnerade frågan överst på den här sidan 6 dokument. Om vi ​​lägger till skip(3) , vi kommer att sluta med de tre sista dokumenten:

db.artists.find( { albums: { $exists: false }} ).skip(3)

Resultat:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

  1. Inuti Santanders nästan realtidsdataintagsarkitektur (del 2)

  2. Låsning och Redis

  3. Hur man får det korta månadsnamnet i SQL

  4. MurmurHash - vad är det?