Tôi mới đến MongoDB. Tôi có mã sau tạo bộ sưu tập và tài liệu nhưng không có trường dấu thời gian. Có cách nào để chèn created_on
tự động trong các tài liệu.
db.createCollection["countries"]; //Created collection
db.countries.insert[{"short_name":"AF","country_name":"Afganistan"}]; //Created document
db.countries.find[]
{ "_id" : ObjectId["53d1d5bcb8173a625961ff34"], "short_name" : "AF", "country_name" : "Afganistan" }
Những gì tôi thực sự sau đó là gán một "created_on" mặc định cho các tài liệu của tôi bằng Cake PHP. Làm cách nào bạn làm được việc đó?
Neil Lunn
Phù bằng vàng 144K3535 gold badges322 silver badges307 bronze badges
Hỏi ngày 25 tháng 7 năm 2014 lúc 4:15Jul 25, 2014 at 4:15
SadikhasansadikhasanSadikhasan
18.1k20 Huy hiệu vàng79 Huy hiệu bạc119 Huy hiệu đồng20 gold badges79 silver badges119 bronze badges
6
MongoDB sẽ không tự động chèn bất cứ thứ gì ngoại trừ trường '_id'. Bạn có thể nhận thời gian chèn từ trường '_id' như thế này -
ObjectId["507c7f79bcf86cd7994f6c0e"].getTimestamp[]
Kết quả sẽ trông giống như thế này -
ISODate["2012-10-15T21:26:17Z"]
Nếu bạn muốn tự mình chèn trường sau đó -
Nếu bạn đang ở trên Mongo Shell thì ngày mới [] sẽ chèn thời gian hiện tại.
db.mycollection.insert[{ 'created_on' : new Date[] }]
Và nếu bạn muốn sử dụng PHP RAW thì -
$collection->save[array["created_on" => new MongoDate[]]];
Hi vọng điêu nay co ich :-]
Đã trả lời ngày 25 tháng 7 năm 2014 lúc 6:09Jul 25, 2014 at 6:09
0
Điều này làm việc cho tôi:
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
Đã trả lời ngày 4 tháng 9 năm 2021 lúc 20:15Sep 4, 2021 at 20:15
ERYKERYKEryk
383 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges
Giới thiệu về Dấu thời gian MongoDB
Trong MongoDB, một loại dấu thời gian đặc biệt được BSON cung cấp cho việc sử dụng nội bộ và không được kết nối với loại dữ liệu thông thường của MongoDB cho dữ liệu. Thời gian sử dụng nội bộ có giá trị 64 bit, trong đó 64 bit này là sự kết hợp của hai giá trị 32 bit.
Hai phần này là:
Đầu tiên là giá trị Time_t là phần quan trọng nhất, trong khi phần ít quan trọng nhất là thứ tự cho hoạt động, nó là tăng dần. Hai 32 bit này với nhau làm cho giá trị 64 bit. Phần quan trọng nhất, bao gồm Time_T, được so sánh trên tất cả các nền tảng, và sau đó giá trị thứ tự được so sánh.
Các giá trị dấu thời gian luôn là duy nhất trong MongoDB với một ví dụ Mongod duy nhất. Dấu thời gian cũng được sử dụng trong nhật ký ghi nhật ký và các tệp hệ thống.
Cú pháp #1
Bây giờ chúng tôi đã hiểu dấu thời gian là gì, sau đây là cú pháp tiêu chuẩn cho dấu thời gian: TS:
new Timestamp[]
- Giải thích: Thực hiện cú pháp trên sẽ lưu trữ thời gian và ngày hiện tại của hệ thống trong tài liệu. Executing the above syntax will store the system’s current time and date within the document.
- MongoDB Shell cung cấp một cách tốt hơn để truy xuất ngày và thời gian, trên đó một tài liệu cụ thể được lưu trữ. Để tìm nạp thời gian ngày, tất cả những gì chúng ta cần là đối tượng của tài liệu.
Cú pháp #2
ObjectId["5ec2f8f009f2b0337b4197fe"].getTimestamp[]
- Giải thích: Sau khi thực hiện, vỏ MongoDB sẽ truy xuất thời gian ngày liên quan đến ID đối tượng được truyền. Lợi nhuận sẽ ở định dạng isodate, với ngày và thời gian chính xác của hoạt động. Tham khảo ảnh chụp màn hình dưới đây cho đầu ra: Upon execution, the mongodb shell will retrieve the date-time associated with the object id passed. The return will be in the ISODate format, with the exact date and time of the operation. Refer the below screenshot for output:
- Dấu thời gian MongoDB trông tương tự như kiểu dữ liệu ngày, trong đó nó có cùng giá trị 64 bit. Nhưng nó cũng có một vài khía cạnh khác với ngày. Dấu thời gian MongoDB khá được sử dụng cho mục đích nội bộ và với mỗi trường hợp của MongoDB, các giá trị được tạo ra cho dấu thời gian là duy nhất.
Làm thế nào để dấu thời gian hoạt động trong MongoDB?
Hoạt động của dấu thời gian trong MongoDB rất đơn giản, trong đó khi được thực hiện, phương thức dấu thời gian sẽ gọi hiện tại [], sẽ chọn ngày và thời gian hiện tại của hệ thống. Ngày và thời gian được chọn này sẽ được lưu trữ trong bộ sưu tập, cùng với các giá trị dữ liệu khác. Và khi chúng tôi không chỉ định ngày hoặc ngày hiện tại hoặc trường Dấu thời gian, $ CurrentDate sẽ tự động được đặt và lưu trữ trong tài liệu.
Các ví dụ để thực hiện dấu thời gian MongoDB
Bây giờ chúng tôi đã hiểu dấu thời gian ở MongoDB và cách nó hoạt động cùng với cú pháp của nó cho phép chúng tôi thực hiện nó. Ví dụ đầu tiên của chúng tôi là một bản ghi trống với dấu thời gian.
Ví dụ 1
Hãy để chèn một tài liệu trống với dấu thời gian để hiểu việc thực hiện dấu thời gian. Truy vấn của chúng tôi dưới đây là một truy vấn chèn, được chèn vào một tài liệu trống mẫu, trong bộ sưu tập kiểm tra thời gian. Cùng với bản ghi trống, chúng tôi sẽ vượt qua dấu thời gian.
Cú pháp
db.timetest.insertOne[ { ts: new Timestamp[] } ];
Để giải thích, truy vấn ở trên sẽ chèn một tài liệu trong bộ sưu tập kiểm tra thời gian, tài liệu này trống, không có cặp giá trị khóa ngoại trừ TS: đó là dấu thời gian của chúng tôi. Tham khảo ảnh chụp màn hình dưới đây để biết sự hiểu biết đúng về truy vấn chèn:
Code:
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
0Output:
Và như bạn có thể thấy, khi chúng tôi tìm nạp bản ghi mới được chèn, tất cả các bản trả về là _id, là mặc định và khóa TS, mà chúng tôi đã không vượt qua bất kỳ giá trị nào, nhưng nó đã chọn và lưu trữ thời gian hiện tại của thời gian hiện tại của hệ thống.
Ví dụ #2
Chúng tôi đã hiểu cách chèn một tài liệu trống và tiếp theo chúng tôi sẽ cố gắng chèn một tài liệu với một số giá trị chính, cùng với dấu thời gian, sử dụng isodate []. Sau đây là truy vấn và giải thích:
Cú pháp
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
1Để giải thích, truy vấn ở trên sẽ chèn một tài liệu trong bộ sưu tập kiểm tra thời gian, tài liệu này trống, không có cặp giá trị khóa ngoại trừ TS: đó là dấu thời gian của chúng tôi. Tham khảo ảnh chụp màn hình dưới đây để biết sự hiểu biết đúng về truy vấn chèn:
Code:
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
0Output:
Và như bạn có thể thấy, khi chúng tôi tìm nạp bản ghi mới được chèn, tất cả các bản trả về là _id, là mặc định và khóa TS, mà chúng tôi đã không vượt qua bất kỳ giá trị nào, nhưng nó đã chọn và lưu trữ thời gian hiện tại của thời gian hiện tại của hệ thống.
Ví dụ #2
Chúng tôi đã hiểu cách chèn một tài liệu trống và tiếp theo chúng tôi sẽ cố gắng chèn một tài liệu với một số giá trị chính, cùng với dấu thời gian, sử dụng isodate []. Sau đây là truy vấn và giải thích:
Cú pháp
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
3Để giải thích, truy vấn ở trên sẽ chèn một tài liệu trong bộ sưu tập kiểm tra thời gian, tài liệu này trống, không có cặp giá trị khóa ngoại trừ TS: đó là dấu thời gian của chúng tôi. Tham khảo ảnh chụp màn hình dưới đây để biết sự hiểu biết đúng về truy vấn chèn:
Và như bạn có thể thấy, khi chúng tôi tìm nạp bản ghi mới được chèn, tất cả các bản trả về là _id, là mặc định và khóa TS, mà chúng tôi đã không vượt qua bất kỳ giá trị nào, nhưng nó đã chọn và lưu trữ thời gian hiện tại của thời gian hiện tại của hệ thống.
Code:
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
0Output:
Ví dụ #2
Chúng tôi đã hiểu cách chèn một tài liệu trống và tiếp theo chúng tôi sẽ cố gắng chèn một tài liệu với một số giá trị chính, cùng với dấu thời gian, sử dụng isodate []. Sau đây là truy vấn và giải thích:
Truy vấn trên sẽ chèn một tài liệu duy nhất trong bộ sưu tập kiểm tra thời gian, với khóa là City và Pune là giá trị của nó. Khóa được thêm vào là ngày chèn vào ngày, đó là một dấu thời gian khi xảy ra hoạt động chèn. Chúng tôi chỉ đơn giản là sử dụng isodate [], chọn hệ thống thời gian hiện tại và lưu trữ nó. Tham khảo ảnh chụp màn hình dưới đây:
Cú pháp
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
5Code:
echo [new MongoDB\BSON\ObjectId["612e10058e19a6074399f7dd"]]->getTimestamp[];
0Output:
Để giải thích, truy vấn ở trên sẽ chèn một tài liệu trong bộ sưu tập kiểm tra thời gian, tài liệu này trống, không có cặp giá trị khóa ngoại trừ TS: đó là dấu thời gian của chúng tôi. Tham khảo ảnh chụp màn hình dưới đây để biết sự hiểu biết đúng về truy vấn chèn:
Và như bạn có thể thấy, khi chúng tôi tìm nạp bản ghi mới được chèn, tất cả các bản trả về là _id, là mặc định và khóa TS, mà chúng tôi đã không vượt qua bất kỳ giá trị nào, nhưng nó đã chọn và lưu trữ thời gian hiện tại của thời gian hiện tại của hệ thống.
Ví dụ #2
Bài viết đề xuất
Đây là một hướng dẫn về dấu thời gian mongoDB. Ở đây chúng tôi thảo luận về phần giới thiệu về Dấu thời gian MongoDB, nó hoạt động như thế nào và các ví dụ tương ứng. Bạn cũng có thể xem qua các bài viết liên quan khác của chúng tôi để tìm hiểu thêm -
- MongoDB không gian địa lý
- Các loại dữ liệu MongoDB
- MongoDB findAndModify
- Quản trị MongoDB