2014-06-30 12 views
10

Chúng tôi đang cố gắng chèn tài liệu với ngày hiện tại làm trường đó. Chúng tôi đang viết bằng java sử dụng plugin eclipse cho mongodb. Chúng tôi muốn thực hiện lệnh Date() của mongo để lấy ngày từ mongo chứ không phải từ java.Làm thế nào để chèn một tài liệu với ngày trong mongo?

Làm cách nào để thực hiện truy vấn mongo này?

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

Tôi tìm thấy câu hỏi này trong một câu hỏi xem trước nhưng câu trả lời là không hữu ích

Link

+0

thể trùng lặp của [Cách tốt nhất để lưu trữ ngày/giờ trong MongoDB] (http://stackoverflow.com/questions/3778428/best-way- to-store-date-time-in-mongodb) –

+0

"eclipse plugin cho mongodb" cung cấp cho nhiều truy cập google khác nhau. Bạn có thể thu hẹp nó xuống một sản phẩm cụ thể không? –

+0

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

Trả lời

19

Người lái xe tiêu chuẩn có java.util.date loại và serializes như BSON ngày. Vì vậy, với một đối tượng bộ sưu tập để "dụ"

Date now = new Date(); 

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

Nếu bạn đang tìm kiếm một cách để sử dụng "máy chủ" thời gian vào các hoạt động, có các nhà điều hành $currentDate, nhưng hoạt động này với "cập nhật", vì vậy bạn sẽ muốn hoạt động "upsert":

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

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

Vì đây thực sự là tuyên bố cập nhật, bạn cần phải cẩn thận khi bạn không thực sự khớp với bất kỳ tài liệu nào nếu bạn định chèn tài liệu này. Vì vậy, nó sẽ là tốt nhất để đảm bảo "truy vấn" của bạn chứa thông tin duy nhất, chẳng hạn như một mới được tạo ra _id hoặc một cái gì đó không kém duy nhất.

+0

Việc này lấy ngày từ máy làm việc hiện tại. Giả sử mongo đang chạy trên một máy chủ khác, và có sự khác biệt nhỏ về thời gian, tôi muốn hiển thị ngày trong máy khác, vì vậy tôi có thể thấy sự khác biệt ngay cả khi đó là một phút hoặc hơn – itaied

+0

@Candroid Bạn thực sự nên làm đảm bảo thời gian được đồng bộ hóa, nhưng có một cách để sử dụng thời gian máy chủ. –

2

Sử dụng này:

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

Tôi cần viết nó bằng java. Làm thế nào tôi có thể viết này trong java eclipse với mongo plugin? Tôi đã thử sử dụng 'lệnh' nhưng nó không hoạt động – itaied

+0

Bạn có thể giải thích câu trả lời của mình một chút không? – Qix

+0

Lệnh bạn viết được viết cho vỏ mongo. Tôi muốn thực hiện lệnh này bằng ngôn ngữ java, vì vậy câu hỏi của tôi là làm thế nào để làm điều đó? Cú pháp đúng là gì? – itaied

2

Bạn có thể làm điều đó cố gắng một cái gì đó như thế này:

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

Đối với tôi, 'ISODATE' đã hoạt động chứ không phải' Date'. –

+0

Nếu bạn viết 'ISODate()' trường đó sẽ là thời gian hiện tại (trên chèn). – totymedli

Các vấn đề liên quan