2012-09-26 12 views
14

Używamy mongo db do przechowywania określonych rekordów w bazie danych produkcyjnych.

Widzimy nasze rekordy o "_id" : { "$oid" : "50585fbcb046b2709a534502"} w bazie danych produkcji, podczas gdy widzimy ten sam rekord, co "_id" : ObjectId(" 50585fbcb046b2709a534502 ") w bazie danych qa. Dla dat widzimy "ld" : { "$date" : "2011-12-03T17:00:00Z"} w bazie danych prod, podczas gdy "ld" :ISODate("2011-12-03T17:00:00Z") w bazie danych qa. Przetestowaliśmy nasze zapytania z powodzeniem w środowisku qa, ale obawialiśmy się, że może to się nie udać w produkcji

1) Czy moje zapytania java będą działać bezproblemowo na prod & qa zarówno? (Używam morfiny apis do zapytania) 2) Czy są one przechowywane wewnętrznie w ten sam identyczny sposób?

+0

FYI dla każdego, kto próbuje uzyskać zwykły JSON (np. '{" $ Oid ": x}' zamiast 'ObjectId (x)' z klienta wiersza poleceń 'mongo': spróbuj zamiast tego użyć' mongoexport' – rakslice

Odpowiedz

17

Aby odpowiedzieć na dwa pytania:

  1. Tak będą one
  2. Tak, są takie same, to jest jedynie przedstawienie w punkcie szukasz w (konsoli lub aplikacji), jak one wyświetlane . Konsola (późniejsza wersja, około 1,4+) wyświetli ObjectId i ISODate (zwykle), podczas gdy wybieranie jej bezpośrednio z języka serwera (Java w twoim przypadku) będzie miała tendencję do pokazywania właściwości pełnych obiektów (w tym przypadku $oid i $date).
+0

Więc nie jest on związany z żadną wersją sterownika itp. Faktycznie, ponieważ w "prod" używamy narzędzia do przeglądania danych, gdzie jak w "qa" używamy wiersza poleceń do przeglądania wprowadzonych danych. –

+0

@KumarManish nah wszystkie wersje sterowników powinny być spójne na tym froncie, tak samo narzędzie pobiera dane w pełnym formacie (lub nawet tłumaczeniu na ich końcu, aby wyglądało tak), podczas gdy konsola tłumaczy wszystkie obiekty w Twój dokument: – Sammaye

+0

Właśnie zweryfikowałem, że ktoś logował się ręcznie do produkcyjnej bazy danych i widziałem, że wersje qa i prod zostały dokładnie pokazane jako mnie. –