Hướng dẫn mongodb date comparison - so sánh ngày mongodb

38

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn truy xuất tất cả các tài liệu sau một ngày cụ thể. Cơ sở dữ liệu của tôi có ngày là -

"$lte" : ISODate["2015-06-17T10:03:46Z"]
3

Tôi đã viết truy vấn sau-

db.collection.find[{DateAdded:{"$lte":new Date["2015-06-17 10:03:46.000Z"]}}]

Nhưng kết quả không tìm được bất kỳ bản ghi nào mặc dù có hồ sơ cho ngày cho đến

"$lte" : ISODate["2015-06-17T10:03:46Z"]
4.

Anju

6351 Huy hiệu vàng9 Huy hiệu bạc25 Huy hiệu đồng1 gold badge9 silver badges25 bronze badges

Đã hỏi ngày 26 tháng 6 năm 2015 lúc 11:24Jun 26, 2015 at 11:24

5

Bạn có thể sử dụng Isodate để so sánh ngày:ISODate to compare dates:

"$lte" : ISODate["2015-06-17T10:03:46Z"]

Isodate hoạt động vì đó là định dạng ngày của bạn đang ở. works because that is the format your date is in.

new Date[] 

Kết thúc ngày trong một người trợ giúp isodate, nhưng không thể chuyển đổi trong truy vấn của bạn.

Kiểm tra liên kết này để biết thêm thông tin: //docs.mongodb.org/manual/core/shell-types/

Đã trả lời ngày 26 tháng 6 năm 2015 lúc 12:22Jun 26, 2015 at 12:22

L_7337L_7337L_7337

2.59128 Huy hiệu bạc42 Huy hiệu đồng28 silver badges42 bronze badges

1

Sử dụng isodateISODate

định dạng:

{'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}

thí dụ:

db.getCollection['yourCollection'].find[{'sampleField': {$lte: ISODate['2015-06-17T10:03:46.000Z']}}]

Cầu nguyện k

6069 Huy hiệu bạc20 Huy hiệu Đồng9 silver badges20 bronze badges

Đã trả lời ngày 5 tháng 2 năm 2018 lúc 4:09Feb 5, 2018 at 4:09

Bạn có thể sử dụng điều này:

db.collection.find[{DateAdded:{"$lte":new Date["2017-11-01"]}}]

Nó sẽ chuyển đổi định dạng ngày của bạn thành điều này:

ISODate["2017-11-01T00:00:00Z"]

Đã trả lời ngày 14 tháng 11 năm 2017 lúc 14:26Nov 14, 2017 at 14:26

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

"$lte" : ISODate["2015-06-17T10:03:46Z"]
5 return một ngày dưới dạng chuỗi hoặc là đối tượng ngày.

Returns a date either as a string or as a Date object.

  • "$lte" : ISODate["2015-06-17T10:03:46Z"]
    
    5 Trả về ngày hiện tại dưới dạng chuỗi trong
    "$lte" : ISODate["2015-06-17T10:03:46Z"]
    
    7
    "$lte" : ISODate["2015-06-17T10:03:46Z"]
    
    7

  • "$lte" : ISODate["2015-06-17T10:03:46Z"]
    
    8 Trả về ngày hiện tại dưới dạng đối tượng ngày.
    "$lte" : ISODate["2015-06-17T10:03:46Z"]
    
    7 Kết thúc đối tượng ngày với người trợ giúp
    new Date[] 
    
    0.
    new Date[] 
    
    0 là ở UTC.
    "$lte" : ISODate["2015-06-17T10:03:46Z"]
    
    7
    wraps the Date object with the
    new Date[] 
    
    0 helper. The
    new Date[] 
    
    0 is in UTC.

Bạn có thể chỉ định một ngày cụ thể bằng cách chuyển chuỗi ngày ISO-8601 với một năm trong phạm vi bao gồm

new Date[] 
2 đến
new Date[] 
3 cho hàm tạo
"$lte" : ISODate["2015-06-17T10:03:46Z"]
8 hoặc hàm
new Date[] 
5. Các chức năng này chấp nhận các định dạng sau:

  • new Date[] 
    
    6 trả về
    new Date[] 
    
    0 với ngày được chỉ định.

  • new Date[] 
    
    8 Chỉ định DateTime trong timezone cục bộ của khách hàng và trả về
    new Date[] 
    
    0 với DateTime được chỉ định trong UTC.

  • {'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}
    
    0 Chỉ định DateTime trong UTC và trả về
    new Date[] 
    
    0 với DateTime được chỉ định trong UTC.

  • {'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}
    
    2 Chỉ định DateTime là mili giây kể từ thời đại Unix [ngày 1 tháng 1 năm 1970] và trả về ví dụ ____2020.

Trong nội bộ, các đối tượng ngày được lưu trữ dưới dạng số nguyên 64 bit có chữ ký đại diện cho số mili giây kể từ kỷ nguyên Unix [ngày 1 tháng 1 năm 1970].

Không phải tất cả các hoạt động và trình điều khiển cơ sở dữ liệu đều hỗ trợ phạm vi 64 bit đầy đủ. Bạn có thể làm việc một cách an toàn với ngày với nhiều năm trong phạm vi bao gồm

new Date[] 
2 đến
new Date[] 
3.

Nếu không có tài liệu nào có

{'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}
6 bằng
{'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}
7 tồn tại trong bộ sưu tập
{'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}
8, thì thao tác sau sẽ chèn một tài liệu với trường
{'field': {$operator: ISODate[yyyy-MM-ddThh:mm:ss.msZ]}}
9 được đặt thành ngày hiện tại:

db.products.updateOne[
{ _id: 1 },
{
$set: { item: "apple" },
$setOnInsert: { dateAdded: new Date[] }
},
{ upsert: true }
]

Mẹo

Để trả về ngày làm chuỗi, hãy sử dụng phương thức

"$lte" : ISODate["2015-06-17T10:03:46Z"]
5, như trong ví dụ sau:

var myDateString = Date[];

"$lte" : ISODate["2015-06-17T10:03:46Z"]
7 Kết thúc các đối tượng của loại ngày với người trợ giúp
new Date[] 
0; Tuy nhiên, các đối tượng vẫn còn thuộc loại ngày. wraps objects of Date type with the
new Date[] 
0 helper; however, the objects remain of type Date.

Ví dụ sau sử dụng

"$lte" : ISODate["2015-06-17T10:03:46Z"]
8 để trả về đối tượng ngày với DateTime UTC được chỉ định.

var myDate = new Date["2016-05-18T16:00:00Z"];

Mẹo

Bạn có thể chỉ định ngày là đối tượng

new Date[] 
0.

Ví dụ sau đây tạo ra một bộ sưu tập

db.getCollection['yourCollection'].find[{'sampleField': {$lte: ISODate['2015-06-17T10:03:46.000Z']}}]
5 với các đối tượng
new Date[] 
0 trong trường
db.getCollection['yourCollection'].find[{'sampleField': {$lte: ISODate['2015-06-17T10:03:46.000Z']}}]
7:

"$lte" : ISODate["2015-06-17T10:03:46Z"]
0

Ví dụ sau trả về các tài liệu trong đó

db.getCollection['yourCollection'].find[{'sampleField': {$lte: ISODate['2015-06-17T10:03:46.000Z']}}]
7 nhỏ hơn
new Date[] 
0 được chỉ định trong toán tử
db.collection.find[{DateAdded:{"$lte":new Date["2017-11-01"]}}]
0:

"$lte" : ISODate["2015-06-17T10:03:46Z"]
1

Ví dụ đầu ra:

"$lte" : ISODate["2015-06-17T10:03:46Z"]
2

Bài Viết Liên Quan

Chủ Đề