mongodb - 如何通过字符串输入查找集合中的项目?
问题描述
在我的集合中users
,我有一个registerDate
格式为 ISODate(< string >) 的字段。我需要向 MongoDB 发送请求。我使用 vibe.d 框架,这个框架只能发送反序列化的 JSON 字符串。因此,输入日期可以是“2021-02-28T21:00:00Z”或 UNIX 时间戳。
详细地:
作品:
db.users.find(
{
"registerDate":{
"$gte": ISODate("2021-02-28T21:00:00Z"),
"$lt": ISODate("2021-10-31T21:00:00Z")
}
})
不起作用:
"$gte": {$date: "2021-02-28T21:00:00Z"},
"$lt": {$date:"2021-10-31T21:00:00Z"}
我也尝试:
db.users.aggregate([
{ "$project": {
"registerDate": {
"$gte": { "$toDate": "2021-01-07T23:39:49.178Z" },
"$lt": { "$toDate": "2021-09-07T23:39:49.178Z" }
}
}
}])
然后,我得到错误:
"errmsg" : "由 :: FieldPath 字段名称引起的 $project :: 无效可能不是以 '$' 开头。"
解决方案
尝试$expr
表达式运算符在$match
阶段使用聚合运算符,
db.users.aggregate([
{
$match: {
$expr: {
$and: [
{
$gte: [
"$registerDate",
{ $toDate: "2021-02-28T21:00:00Z" }
]
},
{
$lt: [
"$registerDate",
{ $toDate: "2021-10-31T21:00:00Z" }
]
}
]
}
}
}
])
推荐阅读
- django - 错误:(1062,“重复条目 'search-laft_cadaveres_cni_identificados' 键 'django_content_type_app_label_model_76bd3d3b_uniq'”)
- mongodb - Mongo DB maxScan - 无法识别的字段
- c# - Blazor WebAssembly:设置不同的 CurrentUICulture 和 CurrentCulture 时无法加载本地化字符串
- testing - 使用 Mocha/Chai 测试对象数组是否包含某个键
- android - 在没有 Root 和 ADB 的情况下自动执行 Android 任务
- python - 在 32 位和 64 位 Python 中导入 PIL(枕头)时出错
- oracle - 如何在 oracle 中连接定义的变量?
- javascript - 如何过滤到仅查看所需属性的对象(js)
- python - 如何从views.py函数收集变化的变量到模板而不在django中重新加载
- powershell - 如何在不使用变量的情况下在 AD 对象的属性上应用带有子字符串的拟合器?