MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bộ lọc ngày Mongoose

Sử dụng đối tượng ngày tháng thực tế cho truy vấn của bạn, không phải chuỗi như bạn đang làm hiện tại. Vì mongo lưu trữ các ngày được bao bọc bằng ISODate helper và BSON cơ bản (định dạng dữ liệu lưu trữ được sử dụng bởi mongo nguyên bản) có loại ngày tháng UTC chuyên dụng là số nguyên có dấu 64 bit (như vậy, 8 byte) biểu thị mili giây kể từ kỷ nguyên thời gian Unix, truy vấn của bạn không trả về bất kỳ thứ gì như nó sẽ so sánh các trường ngày tháng trong mongo với một chuỗi có định dạng ISO.

Vì vậy, hãy thả toISOString () chuyển đổi và sử dụng đối tượng ngày tháng:

if (data.date) {
    const date = new Date();
    const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
    date.setDate(date.getDate() - dateRange);
    query.start = { $lte: date };
    console.log(query);
}

Call.find(query, function (error, docs) {
    if (error) callback(error, null);
    callback(null, docs);    
});

Tốt hơn, bạn có thể sử dụng momentjs plugin có API mã hóa datetime rất trực quan và dễ dàng. Một phương pháp bạn có thể sử dụng là subtract () hàm lấy đối tượng ngày tháng n số ngày trước:

if (data.date) {    
    const dateRange = data.date.slice(0, -1); // strip the "d" from "7d"
    const date = moment().subtract(dateRange, "days");
    query.start = { $lte: date };
    console.log(query);
}

Call.find(query, function (error, docs) {
    if (error) callback(error, null);
    callback(null, docs);    
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để xem hoặc sửa đổi các tùy chọn đối chiếu được đặt trên bộ sưu tập MongoDB?

  2. Mongodb / Mongoid - {:multi => true} có nghĩa là gì

  3. Android / MongoDB:NoClassDefFoundError:com.mongodb.DBPortPool

  4. cách Lặp lại con trỏ mongo trong một vòng lặp trong python

  5. Mật khẩu MongoDB với @ trong đó