sql >> Database >  >> NoSQL >> MongoDB

Waarom vereist MongoDB `unique:true` om een ​​collectie te maken?

Ik heb net geprobeerd het scenario dat je hierboven beschreef aan mijn kant te repliceren met bijna dezelfde versie van mangoest en MongoDB, het werkte prima, documenten werden gemaakt (en opgeslagen) zonder de unieke eigenschap op de firstName veld in het schema. Ik denk niet dat de reden dat uw objecten niet in de DB zijn opgeslagen, is vanwege het ontbreken van de unieke eigenschap.

De reden dat de verzameling niet is gemaakt zonder de unieke eigenschap, is dat mongoose (of MongoDB zelf) geen verzameling maakt totdat u gegevens in de verzameling invoegt. Door de unieke eigenschap toe te voegen, zou MongoDB een indexdocument voor die eigenschap in de verzameling moeten maken en vervolgens gegevens aan de verzameling moeten toevoegen en daarom lijkt het erop dat de verzameling pas is gemaakt nadat de unieke eigenschap is toegevoegd. Dus terwijl de db.<collectionName>.find({} ) geeft mogelijk niets terug, db.<collectionName>.getIndexes() zou je iets geven.




  1. MongoDB 2.4.1 is nu beschikbaar op ScaleGrid

  2. Mongodb groeperen op veld met $substr

  3. Mongodb:$in-operator versus veel enkele zoekopdrachten

  4. JSON-bestand importeren met mongimport, krijg steeds `onverwachte identifier`?