node.js - 将字符串转换为日期并获取差异

标签 node.js mongodb mongoose nosql schema

我在“food”模式-mongodb中很少有这样的数据记录

{
    "_id": "5b220199acbec1409cbf84dd",
    "Name": "Mongo",
    "ID_No": "BA1233",
    "Content": "Bottle",
    "No_packages": 5,
    "No_items": 6,
    "Qty": 30,
    "Mfg": "2018-05-27",
    "Exp": "2018-06-30",
    "__v": 0
  }

我想获取日期差(Exp-today Date)小于30的数据集。 我使用以下命令尝试了它。但没有成功。

db.food.find({$lt: { $subtract: [ Date() , Exp ],"30"}}  )

最佳答案

您需要先使用 $dateFromString (aggregation) 将日期从字符串转换为日期格式,然后 $redact (aggregation) 消除不匹配的文档

db.collection.aggregate([
  { "$addFields": {
    "date": {
      "$dateFromString": {
        "dateString": "$EXP"
      }
    }
  }},
  { "$redact": {
    "$cond": [
      { "$lt": [
        { "$divide": [
          { "$subtract": [new Date(), "$date"] },
          1000 * 60 * 60 * 24
        ]},
        30
      ]},
      "$$KEEP",
      "$$PRUNE"
    ]
  }}
])

关于node.js - 将字符串转换为日期并获取差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50862096/

相关文章:

node.js - 无法让 Node 检查器工作

ruby - 如何为模型获取新的 mongoid 索引

mongodb - 我应该对我的 MongoDB 中的所有集合进行分片还是只分片一些

Mongodb - 更新部分文档

node.js - 如果对象字段在 MongoDB/Mongoose 中是唯一的,则将对象添加到数组中

node.js - Mongoose - 通过 Id 找到 child

javascript - 多人游戏的 jQuery 替代品?

node.js - 在nodeJS中向用户发送通知

javascript - 在 NodeJS session 中看不到原型(prototype)方法

node.js - Mongoose 排除数组中的字段