MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoid заявка по стойност или стойност по подразбиране

За да намерите документи, които не имате определен ключ, искате да използвате $exists :

Така че проверката за съществуване ще изглежда така:

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

Обърнете внимание, че първият :field.exists формулярът става вторият формуляр, преди да бъде изпратен до MongoDB; Споменавам това, защото няма да можете да използвате :field другаде в заявката, без да използвате $and или $or за комбиниране на клаузите::field.exists разширяването може да доведе до презаписване на ключовете в хеша на заявката. Тук няма да имате този проблем, но едно напомняне не може да навреди.

Търси се true е лесно:

Model.where(:field => true)

Искате едно от двете, така че ги комбинирайте с $or :

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

Ако :field може да е там, но да има null стойност, тогава можете да използвате { :field => nil } за съпоставяне на документи, където :field е null или изобщо не е там:

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

Има и { :field => { :$type => 10 } } ако търсите неща, които има тами изрично null . Сега може да е добър момент за бърз преглед на често задаваните въпроси за MongoDB:




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Имате затруднения при използването на MongoDb C# Driver's Sample()

  2. MongoDB:вземете документи по тагове

  3. Как мога да преименувам поле за всички документи в MongoDB?

  4. Как да се присъедините и сортирате няколко колекции в един конвейер в Mongo

  5. MongoDB. Задайте уникален номер за всеки документ в колекцията