2012-04-23 19 views

Odpowiedz

1

Istnieje kilka sposobów:

1- Zakładając, że starają się zapewnić unikatowy identyfikator dla każdego blogu. Dlaczego nie zastąpić pola "_id" swoich dokumentów w kolekcji blogów? przykładowy dokument będzie:

{ "_id" : 122 , "content" : { "title: ..... } 

Trzeba będzie zwrócić uwagę na sposób generowania identyfikatora autoIncrement chociaż, co jest dość łatwe. Tego typu klucze podstawowe nie są jednak zalecane. http://www.mongodb.org/display/DOCS/How+to+Make+an+Auto+Incrementing+Field

2- Niech pola _id pozostają bez zmian, a dodatkowo przechowywać klucz „blogid”, która jest liczbą całkowitą, trzeba będzie uruchomić ensureIndex na „polu blogid` choć aby dostęp blogid szybko. Obciążenie pamięci masowej byłoby niewielkie, ponieważ przechowujesz w dokumencie nazwę klawisza i liczbę całkowitą.

przykładowy dokument będzie:

{ "_id" : xxxxxxxxxx ,"blogid" : 122, "content" : { "title: ..... } 
+0

Czy blogid metody spódnicę wokół scalabilit y problemy lub czy nadal napotykam na te same problemy, co w metodzie 1? – deltanovember

+0

@deltanovember blogid metoda działa dobrze. Jedyny narzut to dodatkowe miejsce na dane i indeks na kluczu blogid. Sugerowałoby również, aby nazwa tego pola była jak najmniejsza, ponieważ zajmuje miejsce na dokumencie, a "stawka" powinna być odpowiednia. – DhruvPathak

1

Istnieje kilka różnych projektów na GitHub, takich jak https://github.com/dodo/node-slug i https://github.com/stipsan/String.Slugify.js, ale koncentrują się one na tworzeniu prawidłowych adresów URL z ciągów (zwykle tematu tematu lub tytułu artykułu). Nie widziałem, aby któryś z nich miał losową liczbę, a niektóre jak krótszy losowy (?) I niepowtarzalny numer.

Osobiście po prostu mam pole tokenu na moim obiekcie postu, które zawiera unikalną wartość, która jest krótsza niż użycie bezpośrednio identyfikatora DB (i trochę bardziej bezpiecznego). Jeśli używasz Mongoose, token może być generowany automatycznie przez podpięcie wcześniejszego "Save" wydarzenia w twoim modelu Mongoose.

2

id w MongoDB jest rzeczywiście wartość szesnastkowy przekonwertować że do wartości liczbowej można użyć następującego kodu, aby szukać wartości liczbowej w bazie jak 1, 2 3 .. i ten kod będzie przekonwertować tę wartość w odpowiednim hex

article_collection.db.json_serializer.ObjectID.createFromHexString(id) 

gdzie article_collection to Twój obiekt kolekcja

Powiązane problemy