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

Zapytanie o zakres MongoDB dla całej wartości osadzonego dokumentu

Zwróć uwagę na polecenie kilka linijek dalej w dokumentacji, do której linkujesz:

Oznacza to, że nieistniejące pola i pola ustawione na null są traktowane specjalnie.

Aby uzyskać dokumenty {} i {a: null} aby być równoważne w kolejności sortowania, algorytm sortowania musi uwzględniać brakujące pole sortowania jako obecne i mieć wartość null .

Jeśli wyraźnie dodasz brakujące pole, aby zobaczyć, jak wygląda, kolejność ma większy sens.

Filtr {tag: { $gte: { baz: MinKey() }}} zastosowane do {_id: 1, tag: {bar: "BAR"}} zasadniczo porównuje {baz: MinKey()} z {baz: null, bar: "BAR"} .

W górnej części połączonej dokumentacji stwierdza, że ​​MinKey jest mniejsze niż null , więc taka jest właściwa kolejność.

EDYTUJ

Ogólnie rzecz biorąc, wykonywanie zapytań jest najbardziej wydajne, gdy nazwy pól same w sobie nie są danymi. Jeśli chodzi o tabelaryczną bazę danych, która kolumna zawierałaby „baz”?

Niewielka zmiana w schemacie uprościłaby ten typ zapytania. Zamiast {tagname: tagvalue} , użyj {k:tagname, v:tagvalue} . Następnie możesz zindeksować tag.k i/lub tag.v i zapytaj o tag.k aby znaleźć wszystkie dokumenty ze znacznikiem „baz”, zapytania o znaczniki z operacjami nierówności działałyby bardziej intuicyjnie.

db.collection.find({"tag.k":{$gte:"baz"}})

Dokładne dopasowania można wykonać za pomocą elemMatch, takiego jak

db.collection.find({tag: {$elemMatch:{k:"baz",v:"BAZ"}}})

Jeśli naprawdę potrzebujesz, aby zwracane dokumenty zawierały {tagname: tagvalue} , $arrayToObject operator agregacji może to zrobić:

db.collection.aggregate([
  {$match: {
      "tag.k": {$gte: "baz"}
  }},
  {
    $addFields: {
      tag: {$arrayToObject: [["$tag"]]}
  }}
])

Plac zabaw




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $dateToString

  2. Jak mogę pobrać bazę danych rekordów drom w widoku edycji w Laravel?

  3. MongoDB liczy odrębną wartość?

  4. Użycie sortowania w mongodb $regex

  5. Liczba grup 2 pozycja tablica obiektów mongodb