【发布时间】:2018-05-16 21:54:38
【问题描述】:
可以编写一个始终返回集合中所有元素的查询,以 pymongo 为例:
MongoClient()["database"]["collection"].find({})
但是,由于我的代码结构,我非常希望能够构建一个相反的查询,一个在所有情况下都必然返回零元素的查询:
MongoClient()["database"]["collection"].find(null_query)
如何定义null_query,这样才正确?
【问题讨论】:
-
我对 mongo 不是很熟悉,但会尝试一些类似查询无效
_id的方法,甚至只是尝试{ _id: { $exists: false } }...(但它很可能是在内部以某种方式检测到这是荒谬的,并导致某种错误...) -
你能解释一下想要这个的理由吗?乍一看,这似乎是寻找问题的解决方案,尽管我可能错了。
-
@yivi 聊天中讨论了基本原理,大致:查询应该是由抽象类“自动生成”的。所以必须有一个实际的 query 来实现始终返回空结果的目标。 (至少我是这么理解的——也许可以把它编辑成问题,让它更清楚......)
-
但是为空集合返回游标似乎并不完全有用,是吗?您可以手动创建空的 Collection 和 Cursor 并将其返回(尽管文档不鼓励)......但我看不到重点。 “强制” MongoClient 返回那将是无用的(因此它不存在)。查询一个已知的空集似乎是浪费,充其量。
-
然而,查询一个已知的空集,正如您迄今为止唯一的答案所暗示的那样,似乎都非常明显(q:如何获得一个空的结果?a:查询不存在的文档!)而且有点浪费。但是,如果它对您有所帮助,那么您将获得更多力量。我不知道,也许 MongoClient 确实针对这种情况进行了优化。