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

Mongoid zapytanie według wartości lub wartości domyślnej

Aby znaleźć dokumenty, których nie masz określony klucz, którego chcesz użyć $exists :

Sprawdzenie istnienia wyglądałoby więc tak:

Model.where(:field.exists => false)
Model.where(:field => { :$exists => false })

Zauważ, że pierwszy :field.exists formularz staje się drugą formą przed wysłaniem do MongoDB; Wspominam o tym, ponieważ nie będziesz mógł użyć :field gdzie indziej w zapytaniu bez użycia $and lub $or aby połączyć klauzule::field.exists rozwinięcie może prowadzić do tego, że klucze w zapytaniu Hash zastępują się wzajemnie. Nie będziesz mieć tutaj tego problemu, ale przypomnienie nie zaszkodzi.

Szukam true jest łatwe:

Model.where(:field => true)

Chcesz któryś z nich, więc połącz je z $or :

Model.where(:$or => [
  { :field.exists => false },
  { :field        => true  }
])

Jeśli :field może tam być, ale mieć null wartość wtedy możesz użyć { :field => nil } aby dopasować dokumenty, gdzie :field jest null lub w ogóle nie ma:

Model.where(:$or => [
  { :field => null  },
  { :field => true  }
])
# or
Model.where(:field.in => [ null, true ]) # This is probably the one you want

Istnieje również { :field => { :$type => 10 } } jeśli szukasz rzeczy, które tam są i jawnie null . Teraz może być dobry moment na szybkie zapoznanie się z najczęściej zadawanymi pytaniami MongoDB:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyszukiwanie w wielu zagnieżdżonych tablicach Mongodb

  2. Schemat MongoDB do przechowywania historii lokalizacji użytkownika

  3. grupuj według daty w zapytaniu mogodb bez uwzględniania czasu

  4. Sterownik C# dla MongoDb:jak używać limit+liczba?

  5. (mangusta/obietnice) Jak sprawdzić, czy dokument został utworzony za pomocą findOneAndUpdate z upsert