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

查看:204
本文介绍了如果日期在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 应用> $match .

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) 使用简单的查找查询和

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天全站免登陆