小编boh*_*717的帖子

如何检查pymongo游标是否有查询结果

我需要检查find语句是否返回非空查询.

我在做的是以下内容:

query = collection.find({"string": field})
if not query: #do something
Run Code Online (Sandbox Code Playgroud)

然后我意识到我的if语句从未执行过因为find返回游标,或者查询是否为空.

因此我检查了文档,找到了两种可以帮助我的方法:

  1. count(with_limit_and_skip=False) 其中(来自说明):

    返回此查询的结果集中的文档数.

    这似乎是一个很好的检查方法,但这意味着我需要计算光标中的所有结果,以确定它是否为零,对吧?有点贵吗?

  2. retrieved 其中(来自说明):

    到目前为止检索的文件数量.

    我在一个空的查询集上测试它并返回零,但它不清楚它做了什么,我不知道它是否适合我.

那么,检查查询是否find()返回空集的最佳方法(最佳实践)是什么?上面描述的方法之一是否适用于此目的?性能怎么样?还有其他方法吗?


需要明确的是:我需要知道查询是否为空,我想找到关于性能和pythonic的光标的最佳方法.

python mongodb pymongo mongodb-query

31
推荐指数
3
解决办法
3万
查看次数

如何将java.sql.Timestamp转换为java.time.OffsetDateTime?

我正在研究Scala项目,我需要将OffsetDateTime类型映射到SQL Timestamp类型.在DB中我想要UTC时间.

从转换OffsetDateTimeTimestamp非常简单(提示来自这个问题),它按预期工作:

import java.time._
import java.sql.Timestamp
val ofsdatetime = OffsetDateTime.now()
// ofsdatetime: java.time.OffsetDateTime = 2017-04-04T21:46:33.567+02:00

val tstamp = Timestamp.valueOf(ofsdatetime.atZoneSameInstant(ZoneOffset.UTC).toLocalDateTime())
// tstamp: java.sql.Timestamp = 2017-04-04 19:46:33.567
Run Code Online (Sandbox Code Playgroud)

如您所见,时区被删除,时间戳是两个小时的时间(UTC),太棒了!

转换回TimestampOffsetDateTime 不能按预期工作:

OffsetDateTime.ofInstant(Instant.ofEpochMilli(tstamp.getTime), ZoneId.systemDefault())

// java.time.OffsetDateTime = 2017-04-04T19:46:33.567+02:00
Run Code Online (Sandbox Code Playgroud)

时区已添加到新创建的OffsetDateTime,但时间不正确(它仍然是UTC,我需要它适应实际时区).

为什么?我究竟做错了什么?

java scala java-8 slick

8
推荐指数
2
解决办法
8163
查看次数

标签 统计

java ×1

java-8 ×1

mongodb ×1

mongodb-query ×1

pymongo ×1

python ×1

scala ×1

slick ×1