# MongoDB ## æ°æ®èªå¨å ¥Mongoåºä½¿ç¨é¡»ç¥ - 使ç¨`MongoDb`å卿°æ®ï¼éè¦ä½¿ç¨`MongoPipeline` 示ä¾: ```python import feapder from feapder import Item class TestMongo(feapder.AirSpider): __custom_setting__ = dict( ITEM_PIPELINES=["feapder.pipelines.mongo_pipeline.MongoPipeline"], MONGO_IP="localhost", MONGO_PORT=27017, MONGO_DB="feapder", MONGO_USER_NAME="", MONGO_USER_PASS="", ) def start_requests(self): yield feapder.Request("https://www.baidu.com") def parse(self, request, response): title = response.xpath("//title/text()").extract_first() # åæ é¢ item = Item() # 声æä¸ä¸ªitem item.table_name = "test_mongo" # æå®åå¨ç表å item.title = title # ç»item屿§èµå¼ yield item # è¿åitemï¼ itemä¼èªå¨æ¹éå ¥åº if __name__ == "__main__": TestMongo().start() ``` ## ç´æ¥ä½¿ç¨ ### è¿æ¥ ```python from feapder.db.mongodb import MongoDB db = MongoDB( ip="localhost", port=27017, db="feapder", user_name="feapder", user_pass="feapder123" ) ``` è¥ç¯å¢åéä¸é ç½®äºæ°æ®åºè¿æ¥æ¹å¼æè settingä¸å·²é ç½®ï¼åå¯ä¸ä¼ å ```python db = MongoDB() ``` æè å¯ä»¥æ ¹æ®urlè¿æ¥ ```python db = MongoDB.from_url("mongodb://username:password@ip:port/db") ``` ### æ¹æ³ > MongoDBå°è£ äºå¢å æ¹æ¥çæ¹æ³ï¼æ¹ä¾¿ä½¿ç¨ #### æ¥ ```python def find(self, table, limit=0) -> List[Dict]: """ @summary: æ æ°æ®ï¼ è¿å() ææ°æ®ï¼ è¥limit == 1 åè¿å (data1, data2) å¦åè¿å ((data1, data2),) --------- @param table: @param limit: --------- @result: """ ``` #### å¢ ```python def add(self, table, data, **kwargs): """ Args: table: data: kwargs: auto_update: è¦çæ´æ°ï¼å°æ¿æ¢å¯ä¸ç´¢å¼éå¤çæ°æ®ï¼é»è®¤False update_columns: æ´æ°æå®çåï¼å¦ææ°æ®çå¯ä¸ç´¢å¼åå¨ï¼åæ´æ°æå®å段ï¼å¦ update_columns = ["name", "title"] insert_ignore: å¯ä¸ç´¢å¼å²çªæ¶æ¯å¦å¿½ç¥ï¼é»è®¤ä¸ºFalse condition_fields: ç¨äºæ¡ä»¶æ¥æ¾çåæ®µï¼é»è®¤ä»¥`_id`ä½ä¸ºæ¥æ¾æ¡ä»¶ï¼é»è®¤ï¼['_id'] exception_callfunc: å¼å¸¸åè° Returns: æ·»å è¡æ° """ ``` ```python def add_batch(self, table: str, datas: List[Dict], **kwargs): """ @summary: æ¹éæ·»å æ°æ® --------- @param command: åå ¸ @param datas: å表 [[..], [...]] @param **kwargs: auto_update: è¦çæ´æ°ï¼å°æ¿æ¢å¯ä¸ç´¢å¼éå¤çæ°æ®ï¼é»è®¤False update_columns: æ´æ°æå®çåï¼å¦ææ°æ®çå¯ä¸ç´¢å¼åå¨ï¼åæ´æ°æå®å段ï¼å¦ update_columns = ["name", "title"] update_columns_value: æå®æ´æ°çåæ®µå¯¹åºçå¼ condition_fields: ç¨äºæ¡ä»¶æ¥æ¾çåæ®µï¼é»è®¤ä»¥`_id`ä½ä¸ºæ¥æ¾æ¡ä»¶ï¼é»è®¤ï¼['_id'] --------- @result: æ·»å è¡æ° """ ``` #### æ´æ° ```python def update(self, coll_name, data: Dict, condition: Dict, upsert: bool = False): """ æ´æ° Args: coll_name: éåå data: åæ¡æ°æ® {"xxx":"xxx"} condition: æ´æ°æ¡ä»¶ {"_id": "xxxx"} upsert: æ°æ®ä¸åå¨åæå ¥,é»è®¤ä¸º False Returns: True / False """ ``` #### å é¤ ```python def delete(self, table, condition: Dict): """ å é¤ Args: table: condition: æ¥æ¾æ¡ä»¶ Returns: True / False """ ```