2011-08-11 9 views
6

Buduję bazę danych z kilkoma kolekcjami. Mam unikalne ciągi, które planuję użyć dla wszystkich dokumentów w głównej kolekcji. Dokumenty w innych kolekcjach będą odwoływać się do dokumentów w głównej kolekcji, co oznacza, że ​​będę musiał zapisać wspomniane identyfikatory w innych kolekcjach. Jednakże jeśli _id musi być unikalny tylko w kolekcji, a nie w całej bazie danych, to po prostu sprawiłbym, że _id w innych kolekcjach również używa wspomnianych unikatowych ciągów.W MongoDB, czy dokument _id musi być unikalny w całej kolekcji lub w całym DB?

Zakładam też, że aby ustawić własne _id, wszystko co muszę zrobić, to mieć właściwość "_id":"unique_string" jako część dokumentu, który wstawiam, prawda? Nie musiałbym konwertować "unique_string" na inny format, prawda?

Ponadto, mówiąc hipotetycznie, czy mógłbym mieć zmienną zapisać ciąg "_id" i użyć zamiast tego? Dla jasności, coś w następujący sposób: var id = "_id", a później w kodzie (podczas wstawiania lub zapytania na przykład) mają id:"unique_string".

najlepsze, a dzięki,
Sami

Odpowiedz

9

_id s muszą być unikatowe w kolekcji. Możesz szybko to sprawdzić, wstawiając dwa dokumenty z tym samym _id w dwóch różnych kolekcjach.

Twoje pozostałe założenia są poprawne, po prostu spróbuj i sprawdź, czy działają (będą). Dowód na budyń jest w jedzeniu.

Uwaga: użyj bezpośrednio _id, var id = "_id" po prostu kompiluje kod.

+0

dziękuję! Sądzę, że masz rację - mogłem z łatwością sam to wypróbować. również, id = "_id" pytanie było przeznaczone raczej dla innych potencjalnych kluczy w danym dokumencie, niż samego "_id". jeśli to działa dla jednego, będzie działać dla innych. dzięki za odpowiedź! doceniam to! – thisissami

+0

hej, yi_H, chciałem tylko dać ci znać, że ta druga część twojej odpowiedzi jest niepoprawna. Nie możesz używać zmiennych do reprezentowania kluczy - przynajmniej nie bezpośrednio. musisz wcześniej zapisać dokument i przekazać ten dokument do zapytania, jeśli chcesz zrobić coś ze zmiennymi wzdłuż tych linii. – thisissami

+0

@thisissami: Nie rozumiem cię ... Mogę wymyślić kilka powodów, dla których to nie działa, np .: w obiekcie dosłownym javascript kluczowa część jest analizowana jako ciąg znaków (dlatego nigdy nie musisz zacytuj to). Możesz to zrobić za pomocą 'id =" _ id "; doc = {...}; doc [id] = value; ' –

Powiązane problemy