您的位置:

MongoDB和如何使用它

一、MongoDB是什么?

MongoDB是一个非关系型、面向文档的数据库管理系统,以C++语言编写,被广泛应用于现代Web应用程序的开发中。

与传统的关系型数据库不同,MongoDB是一个完全面向对象的数据库,使用JSON形式来存储数据。它采用了灵活的文档模型,不需要预定义表结构,数据可以非常容易地嵌入,支持多种数据类型,包括二进制、数组和嵌入的文档。

MongoDB架构的特点是支持水平扩展,具有高性能以及高可用性。

二、为什么要使用MongoDB?

MongoDB的优点之一是强大的查询性能。由于存储数据以文档形式,“查询过滤器”可以更轻松地访问数据,甚至可以跨多个文档嵌套查询。

MongoDB还可用于处理非结构化数据,例如,在未知的数据类型或带有大量嵌套属性的数据集中。

另一个优点是高可用性。MongoDB可以将数据复制到多个节点以实现“副本集群”,从而使故障转移更加容易,同时提供快速的读取副本方式,增加应用程序的可扩展性。

最后,MongoDB的性能比许多其他数据库更好。由于它是一个跨平台系统,并且可以定制修改,因此可以根据项目的要求定制开发过程。

三、基本MongoDB查询操作

在MongoDB中,可以使用Mongo shell、Compass等不同工具进行查询操作。这里使用Mongo shell作为演示。

1. 插入

    
db.
   .insertOne(
    )  # 插入一条记录,如果集合二合一不存在,会自动创建
db.
     .insertMany(
      )  # 插入多条记录,返回ID列表
    
      
     
    
   

2. 查询

    
db.
   .find(
    , 
     )  # 查询数据
db.
      .findOne(
       
        , 
        
         ) # 查询一条数据
        
       
      
     
    
   

3. 更新

    
db.
   .updateOne(
    , 
     , 
      )  # 更新一条数据
db.
       
        .updateMany(
        
         , 
         
          , 
          
           ) # 更新多条数据
          
         
        
       
      
     
    
   

4. 删除

    
db.
   .deleteOne(
    )  # 删除一条数据
db.
     .deleteMany(
      )  # 删除多条数据
    
      
     
    
   

四、使用MongoDB的代码示例

安装MongoDB。进入官网(https://www.mongodb.com/download-center/community),选择合适的版本进行下载。

1. 插入

mongodb_test.py的代码如下:

    
from pymongo import MongoClient

client = MongoClient()  # 创建MongoDB客户端

db = client["test_db"]  # 获取数据库,如果不存在则自动创建

collection = db["test_collection"]  # 获取集合,如果不存在则自动创建

# 插入一条记录
post = {"author": "Peter", "text": "My first blog post!", "tags": ["MongoDB", "Python", "Pymongo"]}
result = collection.insert_one(post)
print(result.inserted_id)

# 插入多条记录
new_posts = [
    {"author": "Mike", "text": "Another post!", "tags": ["bulk", "insert"]},
    {"author": "Eliot", "title": "MongoDB is fun", "text": "and pretty easy too!", "date": datetime.datetime.utcnow()}
]
result = collection.insert_many(new_posts)
print(result.inserted_ids)
    

运行代码后,会输出每次插入操作的ID号。

2. 查询

mongodb_test.py的代码如下:

    
from pymongo import MongoClient

client = MongoClient()  # 创建MongoDB客户端

db = client["test_db"]  # 获取数据库,如果不存在则自动创建

collection = db["test_collection"]  # 获取集合,如果不存在则自动创建

# 查询一条数据
result = collection.find_one({"author": "Peter"})
print(result)

# 查询多条数据
results = collection.find({"author": "Peter"})
for result in results:
    print(result)
    

3. 更新

mongodb_test.py的代码如下:

    
from pymongo import MongoClient

client = MongoClient()  # 创建MongoDB客户端

db = client["test_db"]  # 获取数据库,如果不存在则自动创建

collection = db["test_collection"]  # 获取集合,如果不存在则自动创建

# 更新一条数据
result = collection.update_one({"text": "My first blog post!"}, {"$set": {"text": "My second blog post!"}})
print("更新了", result.modified_count, "条记录。")

# 更新多条数据
result = collection.update_many({"author": "Mike"}, {"$set": {"author": "Eric"}})
print("更新了", result.modified_count, "条记录。")
    

4. 删除

mongodb_test.py的代码如下:

    
from pymongo import MongoClient

client = MongoClient()  # 创建MongoDB客户端

db = client["test_db"]  # 获取数据库,如果不存在则自动创建

collection = db["test_collection"]  # 获取集合,如果不存在则自动创建

# 删除一条数据
result = collection.delete_one({"author": "Peter"})
print("删除了", result.deleted_count, "条记录。")

# 删除多条数据
result = collection.delete_many({"author": "Mike"})
print("删除了", result.deleted_count, "条记录。")
    

五、结论

MongoDB是一种非常灵活的NoSQL数据库,可以用于各种现代Web应用程序的开发,具有高性能和高可用性。通过学习基本查询操作,可以更加了解MongoDB的功能和使用方法。