MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Филтър за дати Mongoose

Използвайте действителния обект за дата за вашата заявка, а не низ, както правите в момента. Тъй като mongo съхранява дати, обвити с ISODate помощник и основният BSON (форматът за данни за съхранение, използван от mongo нативно) има специален тип дата UTC datetime, което е 64-битово (така, 8 байта) цяло число със знак, обозначаващо милисекунди от времевата епоха на Unix, вашата заявка не връща нищо като той ще сравнява полетата за дата в mongo с ISO форматиран низ.

Така че, пуснете toISOString() преобразуване и използвайте обекта за дата:

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);    
});

Още по-добре, можете да използвате momentjs плъгин, който има много интуитивен и лесен API за манипулиране на дата и час. Един метод, който можете да използвате, е subtract() функция за получаване на обекта за дата n преди брой дни:

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. Как получавате достъп до атрибути на обект, заявен от Mongo в Meteor

  2. как да актуализирате полета на вложен обект в mongodb?

  3. Когато защитавате формуляр за коментари и свързаната крайна точка на API, трябва ли входът да бъде дезинфекциран, валидиран и кодиран в браузър, сървър или и двете?

  4. Как да проверя дали mongo db работи на Mac?

  5. приложението изтече при свързване към MongoLab от Heroku