【问题标题】:How to write queries in python script如何在python脚本中编写查询
【发布时间】:2017-05-04 07:06:44
【问题描述】:

数据:

{
  "Fruit": "Pomegranate",
  "District": "Nasik",
  "Taluka": "Nasik",
  "Revenue circle": "Nasik",
  "Sum Insured": 28000,
  "Area": 1200,
  "Farmer": 183
}

{
  "Fruit": "Pomegranate",
  "District": "Jalna",
  "Taluka": "Jalna",
  "Revenue circle": "Jalna",
  "Sum Insured": 28000,
  "Area": 120,
  "Farmer": 13
}

{
  "Fruit": "Guava",
  "District": "Pune",
  "Taluka": "Haveli",
  "Revenue circle": "Uralikanchan",
  "Sum Insured": 50000,
  "Area": 10,
  "Farmer": 100
}

{
  "Fruit": "Guava",
  "District": "Nasik",
  "Taluka": "Girnare",
  "Revenue circle": "Girnare",
  "Sum Insured": 50000,
  "Area": 75,
  "Farmer": 90
}

{
  "Fruit": "Banana",
  "District": "Nanded",
  "Taluka": "Nandurbar",
  "Revenue circle": "NandedBK",
  "Sum Insured": 5000,
  "Area": 2260,
  "Farmer": 342
}

{
  "Fruit": "Banana",
  "District": "Jalgaon",
  "Taluka": "Bhadgaon",
  "Revenue circle": "Bhadgaon",
  "Sum Insured": 5000,
  "Area": 220,
  "Farmer": 265
}

我想在单个 python 脚本中针对此数据中的所有类型的组合编写查询,从而为我提供我们想要的准确输出。

例如:
假设我们只想要 Jalgaon 区的fruit=Banana 的输出,这样就可以得到准确的输出。

假设我们想要区域农民数量超过 100 的输出,那么这给出了精确的输出。

假设我们只想要 District=Pune 的输出,那么该查询会给出准确的输出。同样。

有什么提示吗?如何编写查询来解决这个问题?

我试过的代码:

import pymongo 
connection = pymongo.MongoClient("mongodb://localhost") 
db=connection.book 
record1 = db.book_collection 
cursor = record1.find({"Fruit":"Banana"},{"Fruit":True, "_id":False, "Farmer":True}) 
for doc in cursor: 
    print doc # but there I need one python file for one query

【问题讨论】:

  • 您是否已经尝试过?
  • 您可以将这些结构作为字典加载到 python 中,然后使用您想要的标准列表对其进行迭代。例如,如果 "fruit" == "Banana" 等,您遍历所有元素并打印它们。
  • 是的,我试过了,import pymongo connection = pymongo.MongoClient("mongodb://localhost") db=connection.book record1 = db.book_collection cursor = record1.find({"Fruit": "Banana"},{"Fruit":True, "_id":False, "Farmer":True}) 用于光标中的文档:打印文档
  • 你能在你的帖子中添加这个吗,它将有助于可视化你的问题。
  • 现在看起来像一个真正的问题。

标签: python mongodb mongodb-query pymongo mongoengine


【解决方案1】:

使用给定代码找到所需的输出。您可以为不同的 2 查询创建各种函数。

import pymongo

class DbQuery(object):
    def __init__(self, ):
        self.mongo_client = pymongo.MongoClient("localhost", 27017)

    def findQuery(self):
        mongo_db = self.mongo_client["book"]

        cursor = mongo_db["book_collection"].find({"Fruit":"Guava"},{"Fruit":1})

        for document in cursor:
            # print document['District']
            print document['Fruit']


if __name__ == '__main__':
    obj = DbQuery()
    obj.findQuery()

您可以从此文档中获得更多帮助:

  1. https://docs.mongodb.com/manual/crud/

【讨论】:

  • @P,Madhukar Sir,代码给出错误:文件“stack1.py”,第 9 行查询 =“{“Fruit”:“Guava”},{“Fruit”:1}” ^ SyntaxError: 无效语法
  • 只需在 find 函数调用中替换查询。我对我的代码进行了一些更改。试试这个
  • 先生,代码正在运行,但输出为 "Guava" "Guava" ,
  • 在同一个 python 脚本中,如何编写查询“Dist” --> “Pune”,在同一个 python 脚本中,如何编写查询,其中收入圈的农民数量超过 100?有什么想法吗?
  • 我只预测了水果。请参阅此文档链接docs.mongodb.com/manual/crud 进行提前查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 2013-09-05
  • 2018-03-13
相关资源
最近更新 更多