亲爱的尝试在 mongo 中按日期过滤,但我没有成功。我传递了我的查询和 JSON 结构。
db.getCollection('articles').aggregate([
{ "$match": {
"$expr": {
"$and": [
{
"$gte": [
{ "$dateFromString": { "creationDate": "10-08-2018", "format": "%m-%d-%Y" }}
]
},
{
"$lte": [
{ "$dateFromString": { "creationDate": "10-08-2018", "format": "%m-%d-%Y" }}
]
}
]
}
}}
])
Run Code Online (Sandbox Code Playgroud)
我的 JSON 是
{
"_id" : ObjectId("5bbb6b1de75b933850a608fc"),
"title" : "05",
"body" : "asgfasgasfa",
"creationDate" : ISODate("2018-10-08T14:35:07.000Z"),
"operationType" : "C",
"__v" : 0
}
Run Code Online (Sandbox Code Playgroud)
MongoDB:v3.6.3
如果您要从日期字段中精确查找“10-08-2018”的匹配项,您可以将$dateToString与以下命令结合使用$eq:
db.getCollection('articles').aggregate([
{
"$match": {
"$expr": {
$eq: [
"10-08-2018",
{
"$dateToString": {
"date": "$creationDate",
"format": "%m-%d-%Y"
}
}
]
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
在这里查看它的工作情况
如果您正在查找与日期范围匹配的一组记录:
db.getCollection('articles').aggregate([
{
"$match": {
"$expr": {
"$and": [
{
"$gte": [
"$creationDate",
{
"$dateFromString": {
"dateString": "10-08-2018",
"format": "%m-%d-%Y"
}
}
]
},
{
"$lte": [
"$creationDate",
{
"$dateFromString": {
"dateString": "11-08-2018",
"format": "%m-%d-%Y"
}
}
]
}
]
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
在这里查看它的工作情况
第二个示例的一个注释是,它将日期作为 ISO 日期,因此它不会涵盖2018 年 11 月8 日的结束日期,而是2018-11-08T00:00:00.000Z,如评论所指出的matthPen。
| 归档时间: |
|
| 查看次数: |
9378 次 |
| 最近记录: |