sql >> Database teknologi >  >> NoSQL >> MongoDB

Råd om migrering fra MongoMapper til Mongoid?

Begge af dem er fantastiske MongoDB-biblioteker til Ruby. Men hvis du vil skifte, er her nogle bemærkninger:

Migrering af MongoMapper ORM til Mongoid ORM - Noter

  • Konfigurer databaseforbindelsen.

  • Erstat yaml-konfigurationsfil (inkluderer replikakonfiguration).

  • Konfigurer Mongoid-specifikke muligheder. f.eks. - raise_not_found_error: false . hvis du ikke vil have en fejl hver gang en forespørgsel ikke returnerer noget...

  • Skift alle modeldefinitioner - include MongoMapper::Document at include Mongoid::Document

  • Skift formatet for alle feltdefinitioner.

  • I mongoid skal du angive tidsstemplet:include Mongoid::Timestamps

  • Skift validering. f.eks.::in => ARRAY , vil være:validates :name, presence: true, inclusion: { in: ARRAY }

  • Skift indekser.

  • Skift ordre_efter format. f.eks.:MM:Model.all(:order => 'name') . Mongoid:Model.order_by('name ASC')

  • Error er et nøgleord i Mongoid. Så hvis du har en model ved navn Error , bør du ændre det.

  • Sideinddelingsformatet er anderledes ved at bruge en anden perle.

  • Den primære nøgleindeksindgang i MM er id . I Mongoid er det _id , hvis du har anden kode, der er afhængig af .id i objektet JSON kan du tilsidesætte as_json a> funktion i din model for at skabe den JSON-struktur, du ønsker.

  • I MM, Model.fields(:id, :name) , begrænser de felter, der returneres fra databasen, til dem, der leveres til metoden. I Mongoid er det Model.only(:name,:id)

  • Nogle forespørgsler ændres:

    1. Valg af objekter efter matrix:MM:Model.where(:attr.in => [ ] ) og Model.where(:attr => [ ] ) . Mongoid er kun:Model.where(:attr.in => [ ] )

    2. Kortmulighed for MM svarer til Mid's pluk. Model.map(&:name) --to-- Model.pluck(:name)

    3. Mongoid understøtter ikke find-forespørgsel til nul. f.eks.:value = nil. Model.find(value) vil give en fejl :"Calling Document .find with nil is invalid" . Så i mongoid bør vi gøre:Model.find(value || "") .

    4. I MM:Model.find_or_initialize_by_name("BOB") . I Mongoid Model.find_or_initialize_by(name: "BOB") .

    5. MM kan bruges i disse to muligheder:Model.where({:name => 'BOB'}).first , og også Model.first({:name => 'BOB'}) . Mongoid har kun den første mulighed.

    6. I MM, for at opdatere flere objekter:Model.set({conditions},attr_to_update) . I Mongoid:Model.where(conditions).update_all(attr_to_update) .




  1. oprettelse af dækket indeks for aggregeringsramme

  2. Opdater mange dokumenter i mongoDB med forskellige værdier

  3. Hvordan gemmer jeg blob-data i MongoDB?

  4. MongoDB $toLower