基于MongoDB接口的CosmosDB:如何获取数据库当前时间?
获取Cosmos DB(Mongo API)当前统一时间的可行方案
针对你遇到的问题,我整理了几个快速、低成本的方法,适配Cosmos DB MongoDB API的使用场景:
1. 适配Cosmos DB的isMaster命令
你提到原生Mongo中执行命令能拿到服务器时间,但Cosmos DB的Mongo API对部分命令做了字段精简。试试执行这条命令:
db.runCommand({ isMaster: 1 })
返回结果里的localTime字段就是Cosmos DB服务器的当前UTC时间。如果之前没看到,大概率是RoboMongo默认过滤了部分字段,你可以查看完整的JSON返回结构,localTime肯定包含在内。
2. 用聚合管道直接生成当前时间
这是更简洁的方式,不需要读取任何实际数据,RU消耗几乎可以忽略:
db.any_collection.aggregate([{ $project: { currentServerTime: { $currentDate: { $type: "date" } }, _id: 0 } }])
这里的any_collection可以是你数据库中任意存在的集合(空集合也没问题),聚合查询会直接返回服务器端的当前UTC时间,结果只有你需要的时间字段。
3. 跨API兼容的SQL查询(可选)
如果你偶尔会用到Cosmos DB的SQL API,或者想跨API统一获取时间,可以执行这条SQL语句:
SELECT GetCurrentDateTime() AS currentTime
不过如果你的工作流以Mongo API为主,前面两种方法会更贴合你的使用习惯。
补充说明
Cosmos DB的Mongo API是兼容层而非原生Mongo,所以部分命令的返回字段会被精简,只保留核心必要内容——这就是你之前在原生Mongo和Cosmos DB中执行同一条命令结果不同的原因,但核心的时间字段localTime始终是保留的。
内容的提问来源于stack exchange,提问作者Jonathan Coffey
相关产品推荐
相关产品推荐

