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

Metoda działa w fazie rozwoju, ale nie w produkcji Rails MongoDB

Jeśli masz Coupon Model Mongoid to kolekcja w powłoce MongoDB to db.coupons . To wyjaśniałoby, dlaczego:

db.Coupon.insert(...)

w powłoce MongoDB nie zapewnia tego, czego oczekujesz w kodzie Railsowym.

Jeśli chodzi o komentarz Neila na temat $exists kontra jawne nil sprawdza się, myślę, że naprawdę chcesz nil (AKA null wewnątrz MongoDB). Rozważ to w powłoce MongoDB:

> db.models.insert({ n: 11 })
> db.models.insert({ n: 0 })
> db.models.insert({ n: null })
> db.models.insert({ })
> db.models.find()
{ "_id" : ObjectId("571546e1ce2934dadf379479"), "n" : 11 }
{ "_id" : ObjectId("571546e4ce2934dadf37947a"), "n" : 0 }
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
{ "_id" : ObjectId("571546ecce2934dadf37947c") }

Mamy więc kolekcję z dokumentami, które mają n , nie masz n , mają wyraźne null wartości dla n i inne niż null wartości dla n .

Wtedy możemy zobaczyć różnicę między zapytaniami Mongoid takimi jak :n => nil :

> db.models.find({ n: null })
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }
{ "_id" : ObjectId("571546ecce2934dadf37947c") }

i :n.exists => true (AKA :n => { :$exists => true } ):

> db.models.find({ n: { $exists: true } })
{ "_id" : ObjectId("571546e1ce2934dadf379479"), "n" : 11 }
{ "_id" : ObjectId("571546e4ce2934dadf37947a"), "n" : 0 }
{ "_id" : ObjectId("571546e7ce2934dadf37947b"), "n" : null }

i :n => { :$exists => false } :

> db.models.find({ n: { $exists: false } })
{ "_id" : ObjectId("571546ecce2934dadf37947c") }

Więc :expires_at => nil zapytania znajdą dokumenty, które nie mają expires_at jak również dokumenty, w których expires_at został jawnie ustawiony na nil . Oba te przypadki będą miały miejsce w przypadku Mongoid, chyba że ostrożnie wywołasz remove_attribute zamiast przypisywania nil a oba przypadki oznaczają „brak daty wygaśnięcia”.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoCursorException — nie znaleziono kursora (sterownik MongoDB PHP)

  2. Mockowanie bazy danych w node.js?

  3. „Nie udało się rozłączyć pliku gniazda w MongoDB 3.0”

  4. Wykonywanie zapytań mongoose.js uruchamianych synchronicznie

  5. Zapytanie o lokalizacje w promieniu w MongoDB