Hướng dẫn mongodb update string to date - chuỗi cập nhật mongodb cho đến nay

Với MongoDB hiện đại từ phiên bản 4.2 trở lên, bạn thực sự có thể thực hiện điều này trong một tuyên bố duy nhất:

db.collection.updateMany(
  {},
  [{ "$set": { "dateField": { "$toDate": "$dateField" } }}]
);

Điều này dựa trên một tính năng mới được triển khai tại phiên bản đó cho phép "các biểu thức tổng hợp" được sử dụng trong một câu lệnh thực sự có thể truy cập các giá trị hiện có của tài liệu và sử dụng chúng để tạo ra đầu ra mới.

Trong trường hợp này, $set được sử dụng để "hợp nhất" nội dung mới với tài liệu hiện có và $toDate xử lý việc chuyển đổi.


Câu trả lời cũ

Hiện tại không có tính năng nào trong MongoDB cho phép bạn truy cập nội dung của trường khác trong hoạt động cập nhật. Điều duy nhất bạn có thể làm trong bất kỳ ngôn ngữ nào là lặp lại kết quả:

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});

Bây giờ, bạn có thể chạy nó trên máy chủ bằng cách sử dụng db.eval() nhưng hãy cẩn thận vì có nhiều nguy hiểm cho việc này như được ghi lại và nó có khả năng có tác động lớn đến hệ thống sản xuất.but beware as there are many dangers to this as documented, and it is likely to have a large impact on a production system.

Thất bại rằng các tùy chọn khác của bạn dựa trên việc cập nhật của bạn để chạy càng gần càng tốt (theo thuật ngữ mạng) với cơ sở dữ liệu.update to run as close as possible (in network terms) to the database.

Ngoài ra, trên các tác phẩm cuối cùng của bạn, có vẻ như ngày của bạn không phải là tất cả ở định dạng bạn đã đề cập ở đây, nhưng một số mục chỉ có một chữ số trong tháng hoặc ngày. Vì vậy, bạn cũng sẽ phải đối phó với điều đó nếu bạn chưa có.

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

$dateFromStringConverts chuỗi ngày/thời gian đến một đối tượng ngày.

Converts a date/time string to a date object.

Biểu thức $dateFromString có cú pháp sau:$dateFromString expression has the following syntax:

{ $dateFromString: {
dateString: ,
format: ,
timezone: ,
onError: ,
onNull:
} }

$dateFromString lấy một tài liệu với các trường sau:$dateFromString takes a document with the following fields:

Đồng ruộng

Sự mô tả

dateString

Chuỗi ngày/thời gian để chuyển đổi sang đối tượng ngày. Xem ngày để biết thêm thông tin về định dạng ngày/giờ.

Ghi chú

Nếu chỉ định tùy chọn

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
0 cho nhà điều hành, không bao gồm thông tin múi giờ trong dateString.

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
2

Không bắt buộc. Thông số kỹ thuật định dạng ngày của dateString.

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
2 có thể là bất kỳ biểu thức nào đánh giá theo nghĩa đen của chuỗi, chứa 0 hoặc nhiều định dạng định dạng. Để biết danh sách các nhà xác định có sẵn, hãy xem các định dạng xác định.Format Specifiers.

Nếu không xác định, $dateFromString sử dụng

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
6 làm định dạng mặc định.$dateFromString uses
db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
6 as the default format.

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
0

Không bắt buộc. Múi giờ để sử dụng để định dạng ngày.

Ghi chú

Nếu chỉ định tùy chọn

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
0 cho nhà điều hành, không bao gồm thông tin múi giờ trong dateString.

Không bắt buộc. Thông số kỹ thuật định dạng ngày của dateString.

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});
2 có thể là bất kỳ biểu thức nào đánh giá theo nghĩa đen của chuỗi, chứa 0 hoặc nhiều định dạng định dạng. Để biết danh sách các nhà xác định có sẵn, hãy xem các định dạng xác định.

  • một định danh thời gian Olson, chẳng hạn như

    { $dateFromString: {
    dateString: ,
    format: ,
    timezone: ,
    onError: ,
    onNull:
    } }
    1 hoặc
    { $dateFromString: {
    dateString: ,
    format: ,
    timezone: ,
    onError: ,
    onNull:
    } }
    2, hoặcOlson Timezone Identifier, such as
    { $dateFromString: {
    dateString: ,
    format: ,
    timezone: ,
    onError: ,
    onNull:
    } }
    1 or
    { $dateFromString: {
    dateString: ,
    format: ,
    timezone: ,
    onError: ,
    onNull:
    } }
    2, or

  • Một phần bù UTC trong biểu mẫu:

    • { $dateFromString: {
      dateString: ,
      format: ,
      timezone: ,
      onError: ,
      onNull:
      } }
      3, ví dụ:
      { $dateFromString: {
      dateString: ,
      format: ,
      timezone: ,
      onError: ,
      onNull:
      } }
      4, hoặc

    • { $dateFromString: {
      dateString: ,
      format: ,
      timezone: ,
      onError: ,
      onNull:
      } }
      5, ví dụ:
      { $dateFromString: {
      dateString: ,
      format: ,
      timezone: ,
      onError: ,
      onNull:
      } }
      6, hoặc

    • { $dateFromString: {
      dateString: ,
      format: ,
      timezone: ,
      onError: ,
      onNull:
      } }
      7, ví dụ:
      { $dateFromString: {
      dateString: ,
      format: ,
      timezone: ,
      onError: ,
      onNull:
      } }
      8, hoặc

  • Các chuỗi

    { $dateFromString: {
    dateString: ,
    format: ,
    timezone: ,
    onError: ,
    onNull:
    } }
    9, $set0 hoặc $set1

Để biết thêm thông tin về biểu thức, xem biểu thức.

$set2

Không bắt buộc. Nếu $dateFromString gặp lỗi trong khi phân tích cú pháp ____99 đã cho, nó sẽ xuất ra giá trị kết quả của biểu thức $set2 được cung cấp. Giá trị kết quả này có thể là bất kỳ loại.$dateFromString encounters an error while parsing the given dateString, it outputs the result value of the provided $set2 expression. This result value can be of any type.

Nếu bạn không chỉ định $set2, $dateFromString đã ném lỗi nếu nó không thể phân tích được dateString.$dateFromString throws an error if it cannot parse dateString.

$set9

Không bắt buộc. Nếu dateString được cung cấp cho $dateFromString$toDate2 hoặc thiếu, nó sẽ xuất ra giá trị kết quả của biểu thức $set9 được cung cấp. Giá trị kết quả này có thể là bất kỳ loại.$dateFromString is $toDate2 or missing, it outputs the result value of the provided $set9 expression. This result value can be of any type.

Nếu bạn không chỉ định $set9 và dateString$toDate2 hoặc bị thiếu, thì $dateFromString sẽ xuất hiện $toDate2.$dateFromString outputs $toDate2.

Làm thế nào để bạn thay đổi một trường từ một chuỗi thành một ngày MongoDB?

3 cách để chuyển đổi một chuỗi thành một ngày trong MongoDB..
Dữ liệu mẫu. Các ví dụ trong bài viết này sử dụng tài liệu sau trong một bộ sưu tập có tên là Dogs: {"_id": 1, "Tên": "Fetch", "Sinh": "2021-01-03T23: 30: 15.123"} ....
Nhà điều hành $ DateFromString. ....
Nhà điều hành $ Todate. ....
Toán tử $ chuyển đổi ..

Làm cách nào để định dạng một ngày thành một chuỗi?

Hãy xem mã đơn giản để chuyển đổi ngày thành chuỗi trong java ...
Ngày ngày = lịch.getInstance (). GetTime () ;.
Dateformat dateformat = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss") ;.
Chuỗi strdate = dateformat.format (ngày) ;.

Làm cách nào để thay đổi định dạng ngày trong MongoDB?

MongoDB định dạng ngày DD/mm/yyyy.MongoDB ngày định dạng yyyy-mm-dd ...
Ngày mới (): Một mili giây là một số nguyên và nó xác định số lượng mili giây.....
Ngày mới (): ....
Ngày mới (): ....
Ngày mới (Hồi giáo):.

Ngày tháng ở MongoDB là gì?

Ngày () Trả về ngày hiện tại dưới dạng chuỗi trong Mongosh.Ngày mới () trả về ngày hiện tại dưới dạng đối tượng ngày.Mongosh kết thúc đối tượng ngày với người trợ giúp isodate.Các isodate là ở UTC.returns the current date as a string in mongosh. new Date() returns the current date as a Date object. mongosh wraps the Date object with the ISODate helper. The ISODate is in UTC.