mongodbの基本的な使用とpymongの使い方

4623 ワード

MongoDBのインストール
MongoDBはC++言語で作成された非関係型データベースであり、分散型ファイルストレージに基づくオープンソースデータベースシステムであり、そのコンテンツストレージ形式はJSONオブジェクトに類似しており、そのフィールド値には他のドキュメント、配列、ドキュメント配列を含めることができ、非常に柔軟である.
MongoDBはWindows、Linux、Mac OS、Solarisなど、さまざまなプラットフォームをサポートしています.https://www.mongodb.com/download-center対応するインストールパッケージを見つけることができます.
  • 公式サイト:https://www.mongodb.com
  • 公式文書:https://docs.mongodb.com
  • GitHub:https://github.com/mongodb
  • 中国語チュートリアル:http://www.runoob.com/mongodb/mongodb-tutorial.html

  • MongoDBの使用
    > show dbs
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    > db.runoob.insert({"name":"    "})
    
    >db.site2.find()
    { "_id" : 1, "name" : "RUNOOB", "cn_name" : "    " }
    { "_id" : 2, "name" : "Google", "address" : "Google   " }
    { "_id" : 3, "name" : "Facebook", "address" : "  " }
    { "_id" : 4, "name" : "Taobao", "address" : "  " }
    { "_id" : 5, "name" : "Zhihu", "address" : "  " }
    > show collections
    TutorialItem
    > db.TurorialItem.find()
    

    pymongoの使い方
    テーブルの作成
    #!/usr/bin/env Python
    # coding=utf-8
    import pymongo
    #     
    myclient = pymongo.MongoClient('mongodb://localhost:27017/')
    #     
    # mydb = myclient["rundb"]
    
    #        
    # dblist = myclient.list_database_names()
    # print(dblist)
    # # dblist = myclient.database_names()
    # if "runoobdb" in dblist:
    #   print("      !")
    
    #       
    mydb = myclient['rundb']
    mycol = mydb["sites"]
    collist = mydb. list_collection_names()
    print(collist)
    
    #    
    mydict = {"name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com"}
    
    x = mycol.insert_one(mydict)
    print(x)
    print(x)
    
    mylist = [
        {"name": "Taobao", "alexa": "100", "url": "https://www.taobao.com"},
        {"name": "QQ", "alexa": "101", "url": "https://www.qq.com"},
        {"name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"},
        {"name": "  ", "alexa": "103", "url": "https://www.zhihu.com"},
        {"name": "Github", "alexa": "109", "url": "https://www.github.com"}
    ]
    
    x = mycol.insert_many(mylist)
    
    #              _id  
    print(x.inserted_ids)
    mycol = mydb["site2"]
    
    mylist = [
        {"_id": 1, "name": "RUNOOB", "cn_name": "    "},
        {"_id": 2, "name": "Google", "address": "Google   "},
        {"_id": 3, "name": "Facebook", "address": "  "},
        {"_id": 4, "name": "Taobao", "address": "  "},
        {"_id": 5, "name": "Zhihu", "address": "  "}
    ]
    
    x = mycol.insert_many(mylist)
    
    #              _id  
    print(x.inserted_ids)
    

    クエリー・テーブル
    #!/usr/bin/env Python
    # coding=utf-8
    import pymongo
    
    myclient = pymongo.MongoClient("mongodb://localhost:27017/")
    mydb = myclient["rundb"]
    mycol = mydb["sites"]
    
    for x in mycol.find():
        print(x)
    
    for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):
      print(x)
    
    
    #    
    myquery = {"name": "RUNOOB"}
    
    mydoc = mycol.find(myquery)
    
    for x in mydoc:
        print(x)
    
    #    
    
    myquery = {"name": {"$regex": "^R"}}
    
    mydoc = mycol.find(myquery)
    
    for x in mydoc:
        print(x)
    
    myresult = mycol.find().limit(3)
    
    #     
    for x in myresult:
        print(x)
    

    scrapy爬虫類はmongoデータベースに格納されます
    class  MongoPipeline(object):
        def __init__(self,mongo_uri,mongo_db):
            self.mongo_uri = mongo_uri
            self.mongo_db = mongo_db
    
        @classmethod
        def from_crawler(cls,crawler):
            return cls(
                mongo_uri=crawler.settings.get('MONGO_URI'),
                mongo_db=crawler.settings.get('MONGO_DB')
            )
        def open_spider(self,spider):
            self.client=pymongo.MongoClient(self.mongo_uri)
            self.db=self.client[self.mongo_db]
        def process_item(self,item,spider):
            #       
            name=item.__class__.__name__
            self.db[name].insert(dict(item))
            return item
        def close_spider(self,spider):
            self.client.close()