python - 始终返回零文档的 Mongo 查询
问题描述
可以编写一个始终返回集合中所有元素的查询,以 pymongo 为例:
MongoClient()["database"]["collection"].find({})
但是,由于我的代码结构,我非常希望能够构建一个相反的查询,一个在所有情况下都必须返回零元素的查询:
MongoClient()["database"]["collection"].find(null_query)
我怎样才能定义null_query
,这样这是正确的?
解决方案
您可以要求将任何字段放在空列表中。_id
为此使用该字段似乎是合理的:
db.collection.find({_id: {$in: []}})
如果您想要更短的查询,则根本不需要使用该_id
字段:
db.collection.find({_:{$in:[]}})
如果 MongoDB 版本 >= 3.4 的替代方案:
可以说,还可以询问该_id
字段是否不存在,@Marco13 已建议:
db.collection.find({_id: {$exists: false}})
但是,这假设所有文档都具有该_id
字段,这对于 3.4 之前的 MongoDB 版本不一定是正确的,在该版本中可以创建一个集合,db.createCollection("mycol", {autoIndexID : false})
因此不会自动为所有文档提供一个_id
字段。
推荐阅读
- python-3.x - Python中大型目录的时间高效频率计数(前500个单词)?
- java - 我如何将此脚本从 C# 翻译成 Java
- javascript - Plotly Markers 从 xaxis 占用一些空间,我的要求是从原点 (0,0) 开始标记
- apache-kafka - 跨集群的 Apache Kafka 消费者组示例
- java - 为什么 RecursiveTask 在 fork join 中实现 Serializable?
- firebase - Firebase云功能,发送邮件无需AUTH
- git - Git rebase vs merge。如果 git rebase 会使标签丢失?
- sharepoint-online - 如何在不使用 PowerShell 的情况下在 SharePoint Online 上创建/配置中心站点。需要通过在线管理控制台来完成
- docker - 无法拉取构建器映像 - Redhat Openshift DotNet Core Starter 项目
- php - phpunit - 模拟外部静态方法