如何在Vapor中基于日期通过Document查询?及构造指定查询条件
嘿,我来帮你搞定Vapor框架里用Document做日期条件查询的问题~
在Vapor框架中基于Document进行带日期条件的数据获取
首先得说明,Vapor里操作MongoDB(你提到的Document、collection.find都是MongoDB相关的API)通常用MongoKitten这个驱动库,下面的示例都是基于它展开的:
- 准备工作:确保你已经在项目里配置好MongoDB连接,并且能拿到要操作的
Collection实例。 - 构造日期查询条件:这是核心步骤,需要用Document来描述你的日期过滤规则(比如大于等于某个时间点)。
- 执行查询:把构造好的条件传入
collection.find()方法,就能获取符合条件的数据了。
构造
"dateModified" >= lastUpdateCheck的查询条件 MongoDB里的比较查询需要用操作符来实现,大于等于对应的操作符是$gte。你有两种方式来构造这个条件:
方式一:手动构造Document(最基础的写法)
直接用键值对的方式,把dateModified对应的值设为一个包含$gte和目标日期的子Document:
// 假设lastUpdateCheck是已经定义好的Date类型变量 let query: Document = ["dateModified": ["$gte": lastUpdateCheck]]
然后把这个query传入你的find方法:
let d3 = try collection.find(query, sortedBy: nil, projecting: p)
方式二:用MongoKitten的DSL语法(更简洁)
MongoKitten重载了操作符,所以你原来写的"dateModified" >= lastUpdateCheck其实是可以直接用的——它会自动帮你转换成对应的Document。不过如果是要显式用Document构造器的话,还是上面的手动写法更直接。
额外小提示
如果需要其他日期条件,构造逻辑是一样的:
- 小于等于用
$lte:["dateModified": ["$lte": someDate]] - 范围查询(介于两个日期之间):
let rangeQuery: Document = [ "dateModified": [ "$gte": startDate, "$lte": endDate ] ]
内容的提问来源于stack exchange,提问作者János
相关产品推荐
相关产品推荐

