mongodb - MongoDB Java 条件查找
问题描述
我有一个 mongoDB ( 集合,其中的文档可能包含两个日期dateA
和dateB
。这些日期不能保证设置,并且可以为空。
我想写一个查找查询,它表示:
if dateA is not null:
if dateA is less than someArbitraryDate
or
if dateB is not null:
if dateB is less than someArbitraryDate
看着这个答案,我知道我可能需要使用$expr
and $cond
。我只是不确定如何编写查找。
解决方案
您不需要$expr
或$cond
您所说的简单用例。我们可以用 just 来达到同样的效果$or
。
查询将类似于:
db.collection.find({
"$or": [
{"dateA": {"$exists": true, "$ne": null, "$lt": ISODate("<YYYY-mm-ddTHH:MM:ss>")}},
{"dateB": {"$exists": true, "$ne": null, "$lt": ISODate("<YYYY-mm-ddTHH:MM:ss>")}},
]
})
此处$exists
确保该字段存在,$ne: null
确保该值不为空,然后与日期字符串的小于匹配将在您编写的一个 if-if 块中为您提供所需的内容
将它们组合在一起$or
只会组合每个dateA
和dateB
匹配的结果。
阅读更多关于运营商的信息:https ://docs.mongodb.com/manual/reference/operator/query-comparison/
推荐阅读
- javascript - 更改 HTML innerText 会导致大量内存垃圾
- php - 如何在查询生成器 laravel 中执行此 SQL?
- python - Django ManyToManyField 可以包含多个不同的模型类吗?我该如何订购?
- git - 如何解读 Bitbucket Commit Graph 的可视化?
- delphi - FMX Delphi 10.2 网络摄像头访问冲突,但只是有时
- javascript - 打印最长的单词并忽略数字
- python - 在烧瓶应用程序上出现提示时让 discord.py bot 运行
- azure-vm-scale-set - imageReferenceSku 更改是否会导致 VMSS 重新映像?
- go - 所有 goroutine 都处于休眠状态 - 死锁问题
- javascript - 从 HTML 中导入的 js 库调用函数