如果日期在 mongodb 中为字符串格式,则使用 $gte 和 &lte mongo 运算符 [英] Use $gte and &lte mongo operator if date is in string format in mongodb

查看:14
本文介绍了如果日期在 mongodb 中为字符串格式,则使用 $gte 和 &lte mongo 运算符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在数据库中有像 {dob:"02-23-2000"} 这样的 dob 字段.现在我想在字符串格式的 dob 字段上执行 $gte&lte,如下所示:

I have dob field like {dob:"02-23-2000"} in database. Now I want to perform $gte and &lte on dob field that is in string format like below:

db.panelists.count({"dob":{ '$gte': '08-02-1998', '$lte': '08-02-2003' }});

我总是将计数值设为零.

I am getting count value as zero always.

谁能帮我解决这个问题,用同样的 dob 格式.

Could anyone please help me out to resolve this query in same dob format.

推荐答案

你可以在mongodb中尝试下面的聚合3.6

You can try below aggregation in mongodb 3.6

您可以使用 $dateFromString 聚合将您的 dob 从字符串到日期,然后轻松 $count 应用$的文件匹配就可以了.

You can use $dateFromString aggregation to convert your dob from string to date and then easily $count the documents applying $match on it.

1) 通过 使用聚合$addFields

db.panelists.aggregate([
  { "$addFields": {
    "date": {
      "$dateFromString": { "dateString": "$dob", "format": "%m-%d-%Y" }
    } 
  }},
  { "$match": {
    "date": {
      "$gte": moment('08-02-1998').toDate(),
      "$lte": moment('08-02-2003').toDate()
    }
  }},
  { "$count": "count" }
])

2) 使用简单的查找查询 $expr

db.collection.find({
  "$expr": {
    "$and": [
      {
        "$gte": [
          { "$dateFromString": { "dateString": "$dob", "format": "%m-%d-%Y" }},
          ISODate("2000-02-22T00:00:00Z")
        ]
      },
      {
        "$lte": [
          { "$dateFromString": { "dateString": "$dob", "format": "%m-%d-%Y" }},
          ISODate("2000-02-24T00:00:00Z")
        ]
      }
    ]
  }
})

3) 通过 使用聚合$expr

db.collection.aggregate([
  { "$match": {
    "$expr": {
      "$and": [
        {
          "$gte": [
            { "$dateFromString": { "dateString": "$dob", "format": "%m-%d-%Y" }},
            ISODate("2000-02-22T00:00:00Z")
          ]
        },
        {
          "$lte": [
            { "$dateFromString": { "dateString": "$dob", "format": "%m-%d-%Y" }},
            ISODate("2000-02-24T00:00:00Z")
          ]
        }
      ]
    }
  }}
])

这篇关于如果日期在 mongodb 中为字符串格式,则使用 $gte 和 &lte mongo 运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆