python - 如何检索两个字段值与 pymongo 相等的所有文档?

标签 python mongodb mongodb-query pymongo aggregation-framework

我有一个 MongoDB 集合,我想使用 python 提取某些日期字段小于其他日期字段的所有文档。

我知道如何在 robomongo 中做到这一点:

db.getCollection('myCollection').find({'date1' : {'$lt' : ISODate(this.date2)}})

但是当我使用 pymongo 时这不起作用。我尝试使用 datetime 而不是 ISODate,但没有成功。

编辑:date1 和 date2 都是字段名

有什么解决办法吗?

最佳答案

您需要使用 .aggregate()提供对聚合管道和 $redact 的访问的方法运营商。

pipeline = [
    {'$match': {'date1': {'$exists': True}, 'date2': {'$exists': True}}},
    {'$redact': {'$cond': [{'$lt': ['$date1', '$date2']}, '$$KEEP', '$$PRUNE']}}
]
collection.aggregate(pipeline)

$redact 将使用 $$KEEP 返回所有符合条件的文档并使用 $$PRUNE 丢弃那些不匹配的变量。

$match舞台是可选的,但很好。它所做的只是初步过滤,限制了将在下一阶段处理的文档数量。此外,$redact 会执行集合扫描,因此使用 $match 只会让事情变得更好。

关于python - 如何检索两个字段值与 pymongo 相等的所有文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33944407/

相关文章:

python - 从图中删除节点或重置整个默认图

node.js - Mongoose startSession() 挂起

mongodb - 在没有 [long,lat] 数组的情况下运行 mongodb $geoWithin

java - MongoOperations 保存方法给出 NoSuchMethodError 异常

最小值的 Mongodb 字段约束

java - Spring数据MongoDB : search like on multiple fields

python - 在Python中用不同的值更新MySQL的每一行

python - NumPy 与 MATLAB

python - 针对 Windows 域的分散式身份验证

node.js - 字符串数组上的 MongoDB 全文搜索