首页 > 解决方案 > 如何在 python 中运行 mongodb 查询

问题描述

我正在使用以下查询从collectionin获取数据mongodb

db.testcoll.aggregate([​
  { $unwind :'$data'},​
  { $match : {'type': 'data1', "my_id" : "44ef", 'data.time': { $gte : "2018-07-07 00:00:30" , $lte : "2018-07-08 00:57:30"} }},​
  { $project : { _id:0, my_id: '$my_id', time : '$data.time', value : '$data.value'} }​
])

在 中运行上述查询MongoDb,我​​得到了适当的结果。现在我正在编写一个小python脚本,我需要在其中运行相同的查询。

query = ([​
  { '$unwind' :'$data'},​
  { '$match' : {'type': 'data1', "my_id" : "44ef", 'data.time': { '$gte' : "2018-07-07 00:00:30" , '$lte' : "2018-07-08 00:57:30"} }},​
  { '$project' : { '_id':0, 'my_id': '$my_id', 'time' : '$data.time', 'value' : '$data.value'} }​
])

document = testcoll.find(query)
for i in document:
    print(i)

它显示None调试器中的文档值,因此引发错误:

TypeError: 'NoneType' object is not iterable

如何在 python 中运行查询。谢谢

标签: python-3.xmongodb

解决方案


您可以在 python 中使用相同的 mongo 查询来运行

query = [
  { '$unwind' :'$data'},​
  { '$match' : {'type': 'data1', "my_id" : "44ef", 'data.time': { '$gte' : "2018-07-07 00:00:30" , '$lte' : "2018-07-08 00:57:30"} }},​
  { '$project' : { '_id':0, 'my_id': '$my_id', 'time' : '$data.time', 'value' : '$data.value'} }​
]
document = testcoll.aggregate(query)
for i in document:
    print(i)

推荐阅读