gpt4 book ai didi

mongodb - 如果日期在 mongodb 中为字符串格式,则使用 $gte 和 <e mongo 运算符

转载 作者:可可西里 更新时间:2023-11-01 10:10:54 25 4
gpt4 key购买 nike

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

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

我得到的计数值总是为零。

谁能帮我用相同的 dob 格式解决这个查询。

最佳答案

您可以在 mongodb 3.6

中尝试以下聚合

您可以使用 $dateFromString聚合以将您的 dob 从字符串到日期然后很容易$count申请文件$match在上面。

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 - 如果日期在 mongodb 中为字符串格式,则使用 $gte 和 &lte mongo 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51647245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com