MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB:nie można użyć kursora do przechodzenia przez wszystkie dane

Ogólnie tak. Jeśli masz pole monotoniczne, najlepiej pole indeksowane, możesz po prostu iść wzdłuż niego. Na przykład, jeśli używasz pól typu ObjectId jako klucz podstawowy lub jeśli masz CreatedDate czy coś, możesz po prostu użyć $lt zapytanie, weź stałą liczbę elementów, a następnie wykonaj zapytanie ponownie używając $lt z najmniejszego _id lub CreatedDate napotkałeś w poprzedniej partii.

Uważaj na ścisłe monotoniczne zachowanie w porównaniu z nieścisłym monotonicznym zachowaniem:być może będziesz musiał użyć $lte jeśli klucze nie są surowe, zapobiegaj robieniu rzeczy dwa razy na duplikatach. Ponieważ _id pole jest unikalne, ObjectIds są zawsze ściśle monotoniczne.

Jeśli nie masz takiego klucza, sprawy są nieco trudniejsze. Nadal możesz iterować „wzdłuż indeksu” (niezależnie od indeksu, czy to nazwy, skrótu, UUID, Guid itp.). Działa to równie dobrze, ale wykonywanie migawek jest trudne, ponieważ nigdy nie wiadomo, czy wynik, który właśnie znalazłeś, został wstawiony przed rozpoczęciem przechodzenia, czy nie. Ponadto, gdy dokumenty zostaną wstawione na początku przemierzania, zostaną one pominięte.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Indeksy MongoDB na poddokumentach nie są używane na podstawie składni zapytania

  2. Mongoose wybierz pola do powrotu z findOneAndUpdate

  3. Błąd:klucz $conditionalHandlers nie może zaczynać się od „$” mongodb

  4. Usuń dokument podrzędny zagnieżdżony w tablicy w MongoDB

  5. Jak zliczyć wiele kluczy w tym samym zapytaniu agregującym $group MongoDB?