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

Hvorfor kræver MongoDB 'unique:true' for at oprette en samling?

Jeg har lige prøvet at replikere det scenarie, du beskrev ovenfor på min side med næsten den samme version af mongoose og MongoDB, det fungerede fint, dokumenter blev oprettet (og gemt) uden den unikke egenskab på firstName felt i skemaet. Jeg tror ikke, at grunden til, at dine objekter ikke blev gemt i DB, er på grund af fraværet af den unikke egenskab.

Grunden til, at samlingen ikke blev oprettet uden den unikke egenskab, er, at mongoose (eller MongoDB selv) ikke vil oprette en samling, før du indsætter data i samlingen. Ved at tilføje den unikke egenskab, ville MongoDB skulle oprette et indeksdokument for den pågældende ejendom i samlingen, og dermed tilføje data til samlingen, og det er derfor, det ser ud til, at samlingen først blev oprettet efter tilføjelse af den unikke egenskab. Så mens db.<collectionName>.find({} ) returnerer muligvis intet, db.<collectionName>.getIndexes() ville give dig noget.




  1. Mongo:netværksfejl under forsøg på at køre kommandoen 'whatsmyuri' på værten

  2. Sådan udvikler du applikationer til MongoDB og Redpanda ved hjælp af Docker Compose

  3. MongoDB:Upserting og Sub-dokumenter

  4. Flere $where-forespørgsler i MongoDB