如果日期在mongodb中为字符串格式,请使用$ gte和& lte mongo运算符 [英] Use $gte and &lte mongo operator if date is in string format in mongodb
问题描述
我在数据库中有一个像{dob:"02-23-2000"}
这样的dob字段.现在,我想对dob字段执行$gte
和<e
,其字符串格式如下:
I have dob field like {dob:"02-23-2000"}
in database. Now I want to perform $gte
and <e
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) 与 这篇关于如果日期在mongodb中为字符串格式,请使用$ gte和& lte mongo运算符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!$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")
]
}
]
}
}}
])