python - 使用自己的字段在 MongoDB 中进行过滤

标签 python django mongodb

我试图通过它自己的字段过滤 mongodb 文档,特别是时间,即:

{time1: timeval1, time2: timeval2}

我希望能够得到一个结果集(比如 .find()),其中 timeval1 大于 timeval2。

我不知道如何使用 $gt 执行此操作,也找不到任何类似的东西。关于如何执行此操作的任何想法?

我正在从 djangi 项目中的 pymongo 访问它...但我想要的只是 mongodb 查询。

最佳答案

您可以使用 $where 运算符和一个 javascript 表达式来编写您的查询逻辑。

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-JavascriptExpressionsand%7B%7B%24where%7D%7D

> db.newColl.find()

{ "_id" : ObjectId("4fbdcdd6e79d66d9e681b185"), "time1" : 123, "time2" : 22 }
{ "_id" : ObjectId("4fbdcddee79d66d9e681b186"), "time1" : 11, "time2" : 220 }
{ "_id" : ObjectId("4fbdcde6e79d66d9e681b187"), "time1" : 331, "time2" : 2120 }
{ "_id" : ObjectId("4fbdcdece79d66d9e681b188"), "time1" : 1, "time2" : 20 }

> db.newColl.find({'$where' : 'this.time1 > this.time2' });

{ "_id" : ObjectId("4fbdcdd6e79d66d9e681b185"), "time1" : 123, "time2" : 22 }


> db.newColl.find({'$where' : 'this.time1 < this.time2' });

{ "_id" : ObjectId("4fbdcddee79d66d9e681b186"), "time1" : 11, "time2" : 220 }
{ "_id" : ObjectId("4fbdcde6e79d66d9e681b187"), "time1" : 331, "time2" : 2120 }
{ "_id" : ObjectId("4fbdcdece79d66d9e681b188"), "time1" : 1, "time2" : 20 }

关于python - 使用自己的字段在 MongoDB 中进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731572/

相关文章:

python - 恢复自动生成的迁移以重命名 Django 中的表时出错

python - 如何对元组进行排序?

Python/Django |如何存储已发送的电子邮件?

django - 南迁移文件是否应添加到源代码管理中?

mongodb - 如何减少获取 mongodb 模式锁所花费的时间?

python - 从两个连接的字符串 Python 调用变量

python - 网页抓取 - Python;写入 CSV

python - Cloud 9中的Django-Haystack elasticsearch配置

mongodb - 使用 ReactiveMongo 处理来自上限集合的作业直到被中断

javascript - 如何在 MongoDB 中现有文档中定义不在模式中的新字段? ( Node .js)