📜  MongoDB 和Python

📅  最后修改于: 2021-10-19 08:32:03             🧑  作者: Mango

先决条件:MongoDB:简介
MongoDB 是一个跨平台、面向文档的数据库,它基于集合和文档的概念。 MongoDB 提供高速、高可用性和高可扩展性。
人们脑海中出现的下一个问题是“为什么是MongoDB”?
选择 MongoDB 的原因:

  1. 支持分层数据结构(详情请参考文档)
  2. 它支持像Python的Dictionaries 这样的关联数组。
  3. 内置Python驱动程序将 python 应用程序与数据库连接。示例 – PyMongo
  4. 它专为大数据而设计。
  5. MongoDB 的部署非常简单。

MongoDB 与 RDBMS

MongoDB 和 PyMongo 安装指南

  1. 首先使用以下命令从命令提示符启动 MongoDB:
    方法一:

    mongod

    要么
    方法二:

    net start MongoDB


    查看端口号默认设置为 27017(上图中的最后一行)。
    Python有一个用于 MongoDB 的本机库。可用库的名称是“PyMongo”。要导入它,请执行以下命令:

    from pymongo import MongoClient
    
  2. 创建连接:导入模块后的第一件事是创建一个 MongoClient。
    from pymongo import MongoClient
    client = MongoClient()
    

    之后,连接到默认主机和端口。与主机和端口的连接是明确完成的。以下命令用于连接运行在端口号 27017 上的本地主机上的 MongoClient。

    client = MongoClient(‘host’, port_number)
    example:- client = MongoClient(‘localhost’, 27017)
    

    也可以使用以下命令来完成:

    client = MongoClient(“mongodb://localhost:27017/”)
    
  3. 访问数据库对象:要创建数据库或切换到现有数据库,我们使用:
    方法一:字典式
    mydatabase = client[‘name_of_the_database’]
    

    方法二:

    mydatabase = client.name_of_the_database
    

    如果之前没有创建同名的数据库,MongoDB 会为用户隐式创建一个。
    注意:数据库填充的名称不允许在其中使用任何破折号 (-)。像 my-Table 这样的名称会引发错误。因此,允许在名称中使用下划线。

  4. 访问集合:集合相当于 RDBMS 中的表。我们以与访问 RDBMS 中的表相同的方式访问 PyMongo 中的集合。要访问该表,请说数据库的表名“myTable”,说“mydatabase”。
    方法一:
    mycollection = mydatabase[‘myTable’]
    

    方法二:

    mycollection = mydatabase.myTable
    

    >MongoDB以字典的形式存储数据库,如图:>

    record = {
    title: 'MongoDB and Python', 
    description: 'MongoDB is no SQL database', 
    tags: ['mongodb', 'database', 'NoSQL'], 
    viewers: 104 
    } 

    ‘_id’ 是特殊键,如果程序员忘记显式添加,它会自动添加。 _id 是 12 字节的十六进制数,它确保每个插入文档的唯一性。
    _ID

  5. 在集合中插入数据:
    使用的方法:
    insert_one() or insert_many()

    我们通常在我们的集合中使用 insert_one() 方法文档。假设我们希望将名为 record 的数据输入到“mydatabase”的“myTable”中。

    rec = myTable.insert_one(record)
    

    当需要实现时,整个代码看起来像这样。

    # importing module
    from pymongo import MongoClient
      
    # creation of MongoClient
    client=MongoClient()
      
    # Connect with the portnumber and host
    client = MongoClient(“mongodb://localhost:27017/”)
      
    # Access database
    mydatabase = client[‘name_of_the_database’]
      
    # Access collection of the database
    mycollection=mydatabase[‘myTable’]
      
    # dictionary to be added in the database
    rec={
    title: 'MongoDB and Python', 
    description: 'MongoDB is no SQL database', 
    tags: ['mongodb', 'database', 'NoSQL'], 
    viewers: 104 
    }
      
    # inserting the data in the database
    rec = mydatabase.myTable.insert(record)
    
  6. 在 MongoDB 中查询:有一些查询函数用于过滤数据库中的数据。最常用的两个函数是:
    1. 寻找()
      find() 用于作为查询结果获取多个单个文档。
      for i in mydatabase.myTable.find({title: 'MongoDB and Python'})
          print(i)
      

      这将输出 mydatabase 的 myTable 中标题为“MongoDB and Python”的所有文档。

    2. 数数()
      count() 用于获取具有传入参数的名称的文档数。
      print(mydatabase.myTable.count({title: 'MongoDB and Python'}))
      

      这将输出 mydatabase 的 myTable 中标题为“MongoDB and Python”的文档数量。

      可以将这两个查询函数相加以给出过滤最多的结果,如下所示。

      print(mydatabase.myTable.find({title: 'MongoDB and Python'}).count())
      
    3. 要打印数据库“mydatabase”的“myTable”中的所有文档/条目:使用以下代码:
      from pymongo import MongoClient
        
      try:
          conn = MongoClient()
          print("Connected successfully!!!")
      except:  
          print("Could not connect to MongoDB")
        
      # database name: mydatabase
      db = conn.mydatabase
        
      # Created or Switched to collection names: myTable
      collection = db.myTable
        
      # To find() all the entries inside collection name 'myTable'
      cursor = collection.find()
      for record in cursor:
          print(record)