sql >> Databasteknik >  >> NoSQL >> MongoDB

array med unika värden över alla dokument i en samling

Det kan vara möjligt om du är villig att lagra de unika värdena i en annan samling . Det skulle vara strukturerat så här:

{ "uniquestring" : "a", "account" : 111 }
{ "uniquestring" : "b", "account" : 111 }
{ "uniquestring" : "c", "account" : 111 }
{ "uniquestring" : "d", "account" : 222 }
{ "uniquestring" : "e", "account" : 222 }
{ "uniquestring" : "f", "account" : 222 }

Jag är ingen expert på Mongoose, men jag tror att du kan definiera modeller för att länka samman samlingar, med kontofältet här som refererar till kontosamlingens _id-fält.

Nu kan du framtvinga det unika med ett enkelt index:

db.uniquestrings.createIndex( { "uniquestring" : 1 } , { unique : true } )

Nu kommer din app att ha lite mer arbete att göra när du sparar data (den måste sparas i samlingen av unika strängar såväl som kontosamlingen), men du har nu upprätthållande av det unika hos dessa strängar på databasnivå, över databasen.

PS-redigeringar är välkomna från alla med mer detaljerad kunskap om hur man implementerar och använder sådana modeller i mongoose.



  1. Visa den villkorliga storleken på en array med de andra fälten i ett mongodb-dokument

  2. Sparar Mongoose-objekt i två samlingar

  3. Projektfält i inbäddat dokument inom inbäddad array

  4. Använder UUID istället för ObjectIDs i MongoDB