2014-06-30 18 views
10

Próbujemy wstawić dokument z bieżącą datą w jego polu. Piszemy w języku Java za pomocą wtyczki eclipse dla mongodb. Chcemy wykonać komendę mongo Date(), aby uzyskać datę z mongo, a nie z java.Jak wstawić dokument z datą w mongo?

Jak mogę wykonać to zapytanie mongo?

db.example.insert({"date":new Date()}) 

znalazłem na to pytanie w pytaniu Zapowiedzi ale odpowiedź nie była pomocna

Link

+0

możliwy duplikat [Najlepszy sposób, aby przechowywać datę/czas w MongoDB] (http://stackoverflow.com/questions/3778428/best-way- to-store-date-time-in-mongodb) –

+0

"Wtyczka eclipse dla mongodb" daje wiele różnych hitów google. Czy możesz zawęzić to do konkretnego produktu? –

+0

mongo-java-driver-2.12.0-rc2.jar – itaied

Odpowiedz

19

Standardowa kierowca bierze java.util.date rodzajów i serializes jak BSON Daktyle. Więc z obiektu kolekcji na „przykład”

Date now = new Date(); 

BasicDBObject timeNow = new BasicDBObject("date", now); 
example.insert(timeNow); 

Jeśli szukasz sposobu, aby użyć „serwera” czas w operacji, nie jest operatorem $currentDate, ale to działa z „aktualizacji”, tak byś chce „upsert” działanie:

BasicDBObject query = new BasicDBObect(); 
BasicDBObject update = new BasicDBObject("$currentDate", 
    new BasicDBObject("date", true) 
); 

example.update(query,update,true,false); 

Ponieważ faktycznie jest instrukcja aktualizacji, trzeba być ostrożnym, że nie są właściwie dopasowane żadnych dokumentów, jeśli zamierzają to być tylko wkładka. Najlepiej więc upewnić się, że twoje "zapytanie" zawiera unikalne informacje, takie jak nowo wygenerowany _id lub coś równie unikalnego.

+0

To pobiera datę z bieżącej działającej maszyny. Powiedzmy, że mongo działa na innym serwerze i istnieje niewielka różnica czasowa, chcę wyświetlić datę na innym komputerze, więc mogłem zobaczyć różnicę, nawet jeśli jest to minuta. – itaied

+0

@Candroid Naprawdę powinieneś robić pewne czasy są zsynchronizowane, ale jest sposób na wykorzystanie czasu serwera. –

2

Użyj tego:

db.example.insert({"date":new Date(Date.now())}); 
+0

Potrzebuję napisać to w java. Jak mogę to napisać w java eclipse z wtyczką mongo? Próbowałem użyć "polecenia", ale to nie zadziałało. – itaied

+0

Czy mógłbyś nieco wyjaśnić swoją odpowiedź? – Qix

+0

Wykonane polecenie jest napisane dla powłoki Mongo. Chcę wykonać to polecenie w języku Java, więc moje pytanie brzmi, jak to zrobić? Jaka jest prawidłowa składnia? – itaied

2

Można zrobić to spróbować czegoś takiego:

db.example.insert({"date":ISODate("2016-03-03T08:00:00.000")}); 
+2

Dla mnie "ISODate" działało, a nie "Date". –

+0

Jeśli napiszesz "ISODate()", to pole będzie bieżącą datą (wstawioną). – totymedli

Powiązane problemy