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

Mongo Query pytanie $gt,$lt

To naprawdę zagmatwany temat. Pracuję na 10gen i musiałem spędzić trochę czasu owijając się wokół niego;)

Przyjrzyjmy się, jak aparat zapytań przetwarza to zapytanie.

Oto zapytanie ponownie:

> db.test.find({ b : { $gt :  4, $lt : 6}});

Kiedy dociera do rekordu, wydaje się, że nie powinien pasować...

{ "_id" : ObjectId("4d54cff54364000000004331"), "a" : 1, "b" : [ 2, 4, 6, 8 ] }

Dopasowanie nie jest wykonywane na każdym elemencie tablicy, ale na tablicy jako całości.

Porównanie odbywa się w trzech krokach:

Krok 1 :Znajdź wszystkie dokumenty, w których b ma wartość większą niż 4

b:[2,4,6,8] pasuje, ponieważ 6 i 8 są większe niż 4

Krok 2 :Znajdź wszystkie dokumenty, w których b ma wartość mniejszą niż 6

b:[2,4,6,8] pasuje, ponieważ 2 i 4 są mniejsze niż 6

Krok 3 :Znajdź zestaw dokumentów pasujących zarówno w kroku 1, jak i 2.

Dokument z b:[2,4,6,8] pasuje do obu kroków 1 i 2, więc jest zwracany jako dopasowanie. Pamiętaj, że w tym kroku wyniki są również usuwane z duplikatów, więc ten sam dokument nie zostanie zwrócony dwa razy.

Jeśli chcesz, aby zapytanie dotyczyło poszczególnych elementów tablicy, a nie całej tablicy, możesz użyć operatora $elemMatch. Na przykład

> db.temp.find({b: {$elemMatch: {$gt: 4, $lt: 5}}})
> db.temp.find({b: {$elemMatch: {$gte: 4, $lt: 5}}})
  { "_id" : ObjectId("4d558b6f4f0b1e2141b66660"), "b" : [ 2, 3, 4, 5, 6 ] }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak filtrować tablicę w poddokumencie za pomocą MongoDB?

  2. MongoDB:jak parsować datę w wersji mongoDb 3.6?

  3. Meteor.js wdrożyć na example.com lub www.example.com?

  4. Konwertuj MongoDB BsonDocument na prawidłowy JSON w C#

  5. mongodb c# jak pracować z dokumentem BSON