Nhận dấu thời gian MongoDB

Chào mừng bạn đến với Studio 3T mới nhất Hỏi lợn biển bất cứ điều gì – #Studio3T_AMA. Bạn muốn biết cách sử dụng Studio 3T để làm cho cuộc sống MongoDB của bạn tốt hơn?

A. Nếu bạn có các tài liệu thay đổi theo thời gian, thì dấu thời gian rất phù hợp để theo dõi các thay đổi trong các tài liệu đó.  

Trong AMA trước, chúng tôi đã chỉ ra cách bạn có thể nhận được bằng cách sử dụng dấu thời gian được nhúng vào _id do máy chủ tạo của tài liệu khi tài liệu được tạo. Điều đó cung cấp cho bạn một ngày tạo, nhưng nó hoàn toàn không đề cập đến việc cập nhật. Tệ hơn nữa, ngày sáng tạo đó vừa dính vừa mong manh. Chú ý vì nếu bạn di chuyển tài liệu sang máy chủ khác, dấu thời gian _id sẽ vẫn trỏ đến ngày tạo ban đầu. Dễ vỡ vì nếu bạn tạo lại _id, tất cả thông tin ngày tạo sẽ được thay thế bằng thời gian hiện tại

Vì vậy, mặc dù thật hữu ích khi biết rằng có một dấu thời gian trong các trường _id do máy chủ tạo, nhưng bạn không bao giờ nên xây dựng kiến ​​trúc ứng dụng của mình xung quanh việc sử dụng chúng. Thay vào đó, bạn nên tìm cách thêm hai (hoặc nhiều) trường rõ ràng cho dấu thời gian

Viết dấu thời gian

Đảm bảo rằng tất cả các ứng dụng của bạn tạo và cập nhật dấu thời gian MongoDB sẽ là phần khó nhất của quy trình này; . viết trường

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
2 hoặc cập nhật trường
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3.  

Một ngoại lệ có thể xảy ra nếu bạn sử dụng một gói như Mongoose để làm việc với MongoDB. Nó có hỗ trợ cho. Nếu khung ứng dụng của bạn không có điều đó, thì việc đảm bảo các trường dấu thời gian được quản lý chính xác là tùy thuộc vào sự nghiêm ngặt của nhà phát triển.

Trên thực tế, điều đó có nghĩa là khi chèn tài liệu lần đầu tiên, bạn đặt trường “createdAt” trong lược đồ của mình thành ngày hiện tại, ví dụ:. g Ngày mới(). Thông thường, bạn sẽ muốn đặt trường

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 thành cùng một giá trị. Khi sửa đổi tài liệu, bạn chỉ cần đặt trường
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 với Ngày hiện tại

Viết dấu thời gian trong Studio 3T

Hãy thực hiện bước này một cách thực tế với một lược đồ rất đơn giản, một trường tên và các trường dấu thời gian

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
2 và
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3. Hãy chèn một tài liệu vào bộ sưu tập đó

Nhận dấu thời gian MongoDB

Chúng tôi đang sử dụng

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
1 để tạo dấu thời gian tại đây, ngày và giờ theo GMT+0. Đừng bao giờ nghĩ về dấu thời gian trong bất kỳ múi giờ nào khác. Bạn chỉ cần một dấu thời gian đáng tin cậy, thường xuyên và nhất quán và UTC hay còn gọi là GMT+0 là lựa chọn duy nhất của bạn. Nếu chúng tôi thêm tài liệu này và kéo nó lên trong trình xem, chúng tôi sẽ thấy

Nhận dấu thời gian MongoDB

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
1 không có tham số là ngày hiện tại,
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 với tham số chuỗi sẽ phân tích chuỗi đó thành giá trị ngày. Lưu ý cách hai chuỗi ngày kết thúc bằng “+0000”. Điều đó có nghĩa đây là những ngày UTC

Bây giờ, nếu chúng tôi muốn chỉnh sửa bản ghi này, chúng tôi phải nhớ bảo quản

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
2 và cập nhật
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3. Như thế này

Nhận dấu thời gian MongoDB

Chúng tôi đang thay đổi trường tên của mình thành

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
6, nhưng quan trọng hơn là chúng tôi đang cập nhật trường
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 bằng
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
1 và không thay đổi trường
var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
2. Nếu chúng ta kiểm tra kết quả

Nhận dấu thời gian MongoDB

Với một bản cập nhật

Hầu hết thời gian, chúng tôi cập nhật tài liệu thay vì thay thế hoàn toàn chúng. Vì vậy, hãy xem cách làm mới dấu thời gian MongoDB trong bản cập nhật. Chúng tôi sẽ chọn giá trị

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
6 trong Chế độ xem bảng của mình và hiển thị Hộp thoại cập nhật bằng cách nhấp vào biểu tượng
Nhận dấu thời gian MongoDB
.

Nhận dấu thời gian MongoDB

Ok, bản cập nhật này sẽ chỉ ảnh hưởng đến tài liệu cụ thể này. Tìm hiểu thêm về Cập nhật trong Cập nhật đa tài liệu MongoDB thông minh và an toàn. Nhấp vào tab Cập nhật sẽ hiển thị thay đổi chúng tôi sẽ thực hiện

Nhận dấu thời gian MongoDB

Điều này thực sự không có thay đổi gì cả. Cập nhật vừa tạo một mẫu dựa trên trường hiện được chọn. Nếu chúng tôi chỉ thay đổi giá trị của _id1, thì

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 sẽ không bị thay đổi, vì vậy chúng tôi cũng cần cập nhật giá trị đó

Nhận dấu thời gian MongoDB

Một lần nữa, chúng tôi cập nhật nó với

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
1 để viết vào ngày hiện tại. Nhấp vào Cập nhật và sau đó xem tài liệu

Nhận dấu thời gian MongoDB

Và ở đó chúng ta có thể thấy

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 thực sự đã được cập nhật

Nút. dấu thời gian js/JavaScript

Như một ví dụ cuối cùng, đây là một số Nút. js/JavaScript thực hiện cập nhật tương tự như trên

var result = await collection.updateMany(
           { _id: ObjectId("6169898bc8646c0c1127e257") },
           { $set: { name: "Three Again", updatedAt: new Date() } }
         );

Cái nào chỉ cập nhật trường

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3. Khi bạn đang tạo tài liệu mới, bạn có thể sử dụng quy trình tương tự

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });

Sự thật về Dấu thời gian MongoDB

Bây giờ đây là điều bạn cần biết. Chúng ta đã nói về dấu thời gian trong bài viết này, những dấu thời gian này không liên quan gì đến loại _id6 trong MongoDB. Dấu thời gian của chúng tôi chỉ đơn giản là _id7 loại và không có gì hơn. Luôn giữ thông tin dấu thời gian của bạn trong các đối tượng Ngày. Loại MongoDB _id6 thực sự là một loại mà bạn không nên sử dụng. Sử dụng các loại Ngày trong bộ sưu tập của bạn là cách tốt nhất. Chúng dễ dàng đọc và thiết lập và di động

Bây giờ, tất cả những gì bạn cần làm là thêm dấu thời gian vào các ứng dụng của mình và nhớ khi cập nhật hãy cập nhật trường

var result = await collection.insertOne({
     name: "Four",
     createdAt: new Date(),
     updatedAt: new Date(),
   });
3 hoặc bất kỳ thứ gì bạn quyết định gọi nó là.  

Làm cách nào để tìm dấu thời gian trong MongoDB?

Hoạt động của dấu thời gian trong mongodb rất đơn giản, khi được thực thi, phương thức dấu thời gian sẽ gọi currentDate(), sẽ chọn ngày và giờ hiện tại của hệ thống. This picked date and time will be stored in the collection, along with the other data values.

MongoDB có lưu dấu thời gian không?

MongoDB lưu trữ thời gian ở dạng UTC theo mặc định và sẽ chuyển đổi bất kỳ biểu thị giờ địa phương nào sang dạng này. Các ứng dụng phải vận hành hoặc báo cáo về một số giá trị thời gian địa phương chưa sửa đổi có thể lưu trữ múi giờ cùng với dấu thời gian UTC và tính toán thời gian địa phương ban đầu trong logic ứng dụng của chúng.

Dấu thời gian trong MongoDB là gì?

Dấu thời gian lưu thời gian hiện tại của tài liệu được tạo và cả khi tài liệu được cập nhật ở dạng Ngày bằng cách chuyển thành đúng . Khi đặt thành true, cầy mangut sẽ tạo hai trường như sau. đã tạoAt. Ngày thể hiện khi tài liệu được tạo.

Làm cách nào để thêm dấu thời gian trong MongoDB?

put("giá trị","một số giá trị"); . put("dấu thời gian", ngày mới()); . chèn (myDoc);