范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

python爬虫环境准备之mongodb

  简介
  MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。主要特点MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。MongoDB安装简单。数据库关键名称admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。相关工具MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。Fang of Mongo – 网页式,由Django和jQuery所构成。Database Master — Windows的mongodb管理工具安装下载地址
  www.mongodb.org/downloads下载brew
  首先下载 brew官网中的mongodb规则,brew tap mongodb/brew 复制代码
  下载成功时会有如下类似字眼:==> Tapping mongodb/brew Cloning into "/usr/local/Homebrew/Library/Taps/mongodb/homebrew-brew"... remote: Enumerating objects: 67, done. remote: Counting objects: 100% (67/67), done. remote: Compressing objects: 100% (64/64), done. remote: Total 570 (delta 23), reused 11 (delta 3), pack-reused 503 Receiving objects: 100% (570/570), 122.25 KiB | 149.00 KiB/s, done. Resolving deltas: 100% (261/261), done. Tapped 11 formulae (38 files, 195KB). 复制代码安装mongodb
  在这里,我们安装mongodb的4.4版本,可使用如下命令安装:brew install mongodb-community@4.4 复制代码
  安装成功后会有如下类似提示:==> Installing mongodb/brew/mongodb-community ==> Caveats To have launchd start mongodb/brew/mongodb-community now and restart at login:   brew services start mongodb/brew/mongodb-community Or, if you don"t want/need a background service you can just run:   mongod --config /usr/local/etc/mongod.conf ==> Summary /usr/local/Cellar/mongodb-community/4.4.3: 11 files, 156.8MB, built in 6 seconds ==> Caveats ==> mongodb-community To have launchd start mongodb/brew/mongodb-community now and restart at login:   brew services start mongodb/brew/mongodb-community Or, if you don"t want/need a background service you can just run:   mongod --config /usr/local/etc/mongod.conf 复制代码
  根据提示可知道,后台运行mongodb的方式:brew services start mongodb/brew/mongodb-community 复制代码
  停止后台服务: brew services stop mongodb-community   复制代码
  前台运行的方式如下:mongod --config /usr/local/etc/mongod.conf 复制代码
  查看运行中的mongodb:michaelkoo@MacBook work % ps -ef|grep mongodb   501 80402     1   0 12:38下午 ??         0:02.62 /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf   501 80648 79888   0 12:47下午 ttys002    0:00.00 grep mongodb 复制代码
  由以上可知道,已在运行中。几个关键文件说明
  配置文件,/usr/local/etc/mongod.conf
  日志目录:/usr/local/var/log/mongodb
  数据目录:/usr/local/var/mongodb测试Mongodb自带的shell测试
  可以直接在命令行下进入shell交互窗口michaelkoo@MacBook ~ % mongo MongoDB shell version v4.4.3 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("52ab0789-d65c-49a8-9f4c-2358c7f4abc1") } MongoDB server version: 4.4.3 --- The server generated these startup warnings when booting:          2021-03-30T21:06:02.553+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted         2021-03-30T21:06:02.553+08:00: Soft rlimits too low         2021-03-30T21:06:02.553+08:00:         currentValue: 256         2021-03-30T21:06:02.553+08:00:         recommendedMinimum: 64000 --- ---         Enable MongoDB"s free cloud-based monitoring service, which will then receive and display         metrics about your deployment (disk utilization, CPU, operation statistics, etc).          The monitoring data will be available on a MongoDB website with a unique URL accessible to you         and anyone you share the URL with. MongoDB may use this information to make product         improvements and to suggest MongoDB products and deployment options to you.          To enable free monitoring, run the following command: db.enableFreeMonitoring()         To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- 复制代码常见的shell命令db.hostInfo(),查看当前数据库的主机信息 db.hostInfo() { 	"system" : { 		"currentTime" : ISODate("2021-04-01T02:25:51.925Z"), 		"hostname" : "MacBook.lan", 		"cpuAddrSize" : 64, 		"memSizeMB" : NumberLong(16384), 		"memLimitMB" : NumberLong(16384), 		"numCores" : 8, 		"cpuArch" : "x86_64", 		"numaEnabled" : false 	},     ...     ...          	"extra" : { 		"versionString" : "Darwin Kernel Version 19.6.0: Mon Aug 31 22:12:52 PDT 2020; root:xnu-6153.141.2~1/RELEASE_X86_64", 		"alwaysFullSync" : 0, 		"nfsAsync" : 0, 		"model" : "MacBookPro15,2", 		"physicalCores" : 4, 		"cpuFrequencyMHz" : 2400, 		"cpuString" : "Intel(R) Core(TM) i5-8279U CPU @ 2.40GHz", 		"cpuFeatures" : "FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C SYSCALL XD 1GBPAGE EM64T LAHF LZCNT PREFETCHW RDTSCP TSCI", 		"pageSize" : 4096, 		"scheduler" : "dualq" 	}, 	"ok" : 1 复制代码db.stats(),查看数据库当前状态> db.stats() { 	"db" : "kk", 	"collections" : 2, 	"views" : 0, 	"objects" : 3, 	"avgObjSize" : 63, 	"dataSize" : 189, 	"storageSize" : 57344, 	"indexes" : 2, 	"indexSize" : 53248, 	"totalSize" : 110592, 	"scaleFactor" : 1, 	"fsUsedSize" : 167403245568, 	"fsTotalSize" : 250685575168, 	"ok" : 1 } 复制代码db.getLastError(),查看最近的一个错误,如果没有则返回null> db.getLastError() null 复制代码db,查询当前数据库,示例如下> db test 复制代码show dbs,查看所有数据库,示例如下> show dbs admin   0.000GB config  0.000GB kk      0.000GB local   0.000GB test    0.000GB 复制代码use xx,xx是某个库,切换到xx库,> use kk switched to db kk 复制代码show tables,查询当前文档的所有集合> show tables col kcol 复制代码db.collection.count(),查询collection的数据量> db.col.count() 2 > db.col.find() { "_id" : ObjectId("60652d50000178f64d7b2490"), "a" : "aaa", "b" : "bbb", "c" : "ccccc", "d" : "dddd" } { "_id" : ObjectId("60652d66000178f64d7b2491"), "a" : "a444", "b" : "333", "c" : "222", "d" : "111" } 复制代码db.collection.stats(),查询集合的状态> db.col.stats() { 	"ns" : "kk.col", 	"size" : 136, 	"count" : 2, 	"avgObjSize" : 68, 	"storageSize" : 20480, 	"freeStorageSize" : 0, 	"capped" : false, 	... 	... 	"nindexes" : 1, 	"indexBuilds" : [ ], 	"totalIndexSize" : 20480, 	"totalSize" : 40960, 	"indexSizes" : { 		"_id_" : 20480 	}, 	"scaleFactor" : 1, 	"ok" : 1 复制代码数据导出,mongoexportmongoexport --jsonArray -o mon.json -d kk -c col 复制代码
  以json数组形式导出kk库的col集合的所有数据到mon.json文件中数据导入,mongoimportmongoimport --jsonArray --file mon.json -d kk -c kcol connected to: mongodb://localhost/ 2 document(s) imported successfully. 0 document(s) failed to import. 复制代码
  以json数组的形式把mon.json里面的数据导入到kk库的 kcol集合中查询
  查询中有一些特殊的操作符需要注意:
  操作符
  格式
  样例
  相等(=)
  {:{}}
  db.test.find({"visit":24})
  大于(>)
  {:{$gt:}}
  db.test.find({"visit":{$gt:18}})
  小于(<)
  {:{$lt:}}
  db.test.find({"visit":{$lt:16}})
  大于等于(>=)
  {:{$gte:}}
  db.test.find({"visit":{$gte:18}})
  小于等于(<=)
  {:{$lte:}}
  db.test.find({"visit":{$lte:18}})
  不等于(!=)
  {:{$ne:}}
  db.test.find({"visit":{$ne:16}})
  与
  {key01:value01,key02:value02,..}
  db.test.find({"visit":18,"date":"2021-02-14"})
  或
  {$or:[{key01:value01},{key02:value02}...]}
  db.test.find($or,[{"visit":10008},{"pv":18000}])
  概括下查询相关的操作符 1.常规的比较查询操作符$gt,大于 $lte,小于等于 $in,包含 $nin,不包含 $lt,小于 $gte,大于等于 $ne,不等于 $eq,等于 复制代码
  2.常规的查询操作符$mod,取模 $regex,正则 $text,文本 $where,条件 $and, $nor, $not, $or 复制代码
  3.元数据查询操作符$type,数据类型操作符 $exists,判断字段是否存在操作符 复制代码
  4.聚合操作符$sum, $avg, $stdDevPop,$stdDevSamp,不解其意 $min, $max, $first,根据文档的排序获取第一个文档数据 $last,根据文档的排序获取最后一个文档数据 $push,在结果文档中插入值到一个数组中 $addToSet,在结果文档中插入值到一个数组中,但不创建副本 复制代码添加db.collection.insertOne({"key":"value"}) db.collection.insertMany([{"key01":"value01"},{"key02":"value 02"})  复制代码
  说明: 第一条命令,是往集合中添加一条数据;
  第二条命令,是往集合中添加多条数据,insertMany的参数是数组形式;更新db.collection.updateOne({"x": 1}, {"$inc": {"x": 3}}) db.collection.updateMany({"x": 1}, {"$inc": {"x": 3}}) db.collection.replaceOne({"x": 1}, {"y": 1}) 复制代码
  说明: 第一条命令,是把值为1的x更改为值加3,x=4
  第二条命令,是把所有值为1的x更改为值加3,x=4
  第三条命令,是把值为1的x更改y,改的是key,值不变
  更新相关的操作符
  名称
  描述
  $inc
  自增操作符
  min,min,min,max
  最小操作符,最大操作符
  $set
  设置操作符
  $unset
  删除操作符,操作key及值
  $rename
  重命名操作符,修改key删除db.collection.deleteMany ({ "ac" : "d" }) db.collection.deleteMany ({ "ac" : {$regex:"a*"} }) db.collection.delete.One ({ "ac" : "b" }) db.collection.deleteMany ({}) 复制代码
  说明: 第一个命令是删除ac值为d的数据
  第二个命令是删除ac值为a开头的数据,这里使用了mongo 的关键词"$regex",意思后面的值是正则表达式
  最后一个是删除collection下面的所有数据Mongo in python安装pymongo库pip install pymongo  复制代码
  安装成功后:Collecting pymongo   Using cached pymongo-3.11.3-cp37-cp37m-macosx_10_6_intel.whl (414 kB) Installing collected packages: pymongo Successfully installed pymongo-3.11.3 复制代码实例import pymongo import re import time   def mongo_init():     c = pymongo.MongoClient("mongodb://127.0.0.1/27017")     k_c = c["kk"]      _create_data(k_c)      _find_data(k_c)      _update_data(k_c)      _delete_data(k_c)      pass   def _create_data(k_c):     """     添加数据,     先查询是否存在,不存在才插入     :param k_c:     :return:     """     print("[*]      insert data     [*]")     d = {"ab": "abc"}     if k_c["kcol"].find(d).count() <= 0:         r = k_c["kcol"].insert_one(d)         print(r.inserted_id, r.acknowledged, d)      ac = {"ac": "this is ac"}     if k_c["kcol"].find(ac).count() <= 0:         r = k_c["kcol"].insert(ac)         print(f"insert ac :{r}")      ad = {"ac": "this is ac two"}     if k_c["kcol"].find(ad).count() <= 0:         r = k_c["kcol"].insert(ad)         print(f"insert ad :{r}")     pass   def _find_data(k_c):     """     查询数据,这里只列出最基本的查询操作,还有更多查询请参考官网     :param k_c:     :return:     """     print(" [*]      find data       [*]")     cols = k_c["kcol"].find_one({"ac": re.compile("a")})     print(f"find one :{cols} ")      cols = k_c["kcol"].find().sort("ac")  # 无参数则表示查询全部     cols.next()     for i in cols:         print(f"find many:{i}")     pass   def _update_data(k_c):     # 更新     print("[*] update [*]")      k_c["kcol"].update_many({"ac": re.compile("a")}, {"$set": {"ac": "ad--update:" + str(time.time_ns())}})     k_c["kcol"].replace_one({"ab": "abc"}, {"ab_replace": "abc is replace"})      cols = k_c["kcol"].find({"ac": re.compile("a")})     for col in cols:         print(col)     pass   def _delete_data(k_c):     # 删除     print("[*]      delete      [*]")     f = {"ac": re.compile("ad")}     f_data = k_c["kcol"].find(f)     for fd in f_data:         print(f"before del:{fd}")      k_c["kcol"].delete_many(f)      cols = k_c["kcol"].find({"ac": re.compile("")})     for col in cols:         print(col)     pass  复制代码
  运行结果如下:/Users/michaelkoo/work/env/csdn/code/ImgBianhua/venv/bin/python /Users/michaelkoo/work/env/csdn/code/ImgBianhua/main.py [*]      insert data     [*] 6064892a2243504a9c23cb8e True {"ab": "abc", "_id": ObjectId("6064892a2243504a9c23cb8e")} insert ac :6064892a2243504a9c23cb8f insert ad :6064892a2243504a9c23cb90  [*]      find data       [*] find one :{"_id": ObjectId("6064892a2243504a9c23cb8f"), "ac": "this is ac"}  find many:{"_id": ObjectId("6064892a2243504a9c23cb8f"), "ac": "this is ac"} find many:{"_id": ObjectId("6064892a2243504a9c23cb90"), "ac": "this is ac two"} [*] update [*] {"_id": ObjectId("6064892a2243504a9c23cb8f"), "ac": "ad--update:1617201450462799000"} {"_id": ObjectId("6064892a2243504a9c23cb90"), "ac": "ad--update:1617201450462799000"} [*]      delete      [*] before del:{"_id": ObjectId("6064892a2243504a9c23cb8f"), "ac": "ad--update:1617201450462799000"} before del:{"_id": ObjectId("6064892a2243504a9c23cb90"), "ac": "ad--update:1617201450462799000"}  Process finished with exit code 0

寄生虫寄生了之后是否可以控制寄主呢?谢谢邀请,如果是蛔虫的话,会让人消瘦,吃多少都不胖如果是小孩会影响身高的,因为营养都被蛔虫吸收了,曾经见过邻居家的孩子玩泥巴,然后蛔虫多了,开刀拿出来有成人拳头那么大,后面小孩调养初中生买什么样的手机,学生手机可以吗?给孩子买什么样的手机,家长要有一个明确的目标。如果初中的孩子用手机是因为学校老师会在手机上布置作业,那家长就要根据特殊情况给孩子买手机了。手机可以是帮助孩子学习的辅助工具,也有可能助听器能听到水声很大很吵,需要去调吗?数字助听器都是可以调试的,通过参数的微调来改变声音的频率增益等特性来改善用户的聆听体验。专业的验配师会根据个人的听力情况与聆听环境,并结合自身多年的丰富验配经验制定专业的方案,有针现在是不是很多人打微信语音电话,不直接打电话了?分情况,紧急的事还是得打电话。万一对方那边信号不好呢我都快一年没直接打电话了呲牙你们呢?是的,现在确实有人只喜欢打微信语音电话,不喜欢直接打电话了。不过这种方式也有很多人反对。有时每经热评丨数字人民币是人民币发展重要一环中南财经政法大学数字经济研究院执行院长教授盘和林随着数字经济不断发展,以比特币为代表的一大批数字货币出现在人们的视野中,这些由算法或私人主导的数字资产吸引了全球投资者关注,然而,相GameFiDeFiNFT,区块链下一个出口在哪从当初看到区块链想当然的联想到比特币,到现在各行业的区块链全面开花,这一过程可谓是发生了翻天覆地的变化。特别是近期各种新事物的出现,让我们看到了更多新的形势。比如GameFiDeF主动降噪,畅享音乐和运动体验,漫步者W280NB颈挂式运动耳机随着手机等移动设备追求更轻,更薄的小型化设计,都逐步取消传统的3。5音频接口,选择一款合适的蓝牙运动耳机,不管是运动和日常听音乐,听着优美动听的音乐,运动起来也更加的舒适,而且音质小众冷门但是实用,双十一值得入手的4件数码好物马上又要双十一了,各大品牌都摩拳擦掌做好了促销的准备,各种主流品牌我就不多说了,今天给各位推荐4件小众冷门的实用数码好物,都有很好的优惠力度,而且都很好用哦!有源音箱虽然现在市面上14nm叠加封装芯片,没有台积电代工,2家大陆企业或能胜任2020年,华为麒麟芯片9000成为台积电代工的最后一款手机芯片,之后很长时间没有替代方案。在国内至少有2家企业,可以为华为生产14nm芯片。目前,国内芯片领域最好的代工企业,依然家里老人听力不好还有耳鸣能配助听器吗?原则上只要有残余听力都是可以配助听器的,如果单纯的中耳引起的听力下降,配戴助听器的效果是不错的,但是很多老人会随着年龄的增加逐渐变成混合性听力损失,建议去附近的助听器验配店咨询,千怎样用荞麦面蒸馒头?荞麦富含蛋白质多种维生素和矿物质,营养价值很高,而且低脂低热量,有清血脂,清肠胃的功效,特别适合三高人群和正在瘦身的朋友。荞麦作为一款粗粮,保留了更多表面麸皮,富含膳食纤维,对于肠
创纪录!三星集团发布未来三年的投资和雇佣计划,预计投资1。33万亿元央视财经(记者吕博慧)据韩国国际广播电台25日报道,三星集团发布了未来三年的投资和雇佣计划。三星集团预计未来三年将共投资240万亿韩元(约合人民币1。33万亿元),创史上最大规模。听损患者的聆听技巧都有哪些?1。耳到佩戴助听器后需要一个适应过程,患者必须重新学习辨别声音,重新适应有声世界2。眼到手到佩戴助听器聆听声音时可结合看口形和阅读文字听不懂的写下来,让别人放慢语速,多读几遍,直到蔚来汽车让位!中国造车新势力龙头易主,连续两个月夺得销冠过去一个月,国内汽车销量相对平稳,环比降幅好于预期。中国汽车工业协会公布的统计显示,今年前七个月,我国新能源汽车产销量分别为150。4万辆和147。8万辆,均超过去年同期创下新高。互联网运营简史(2)中国早期的商业模式是怎样?谁最早实现盈利中国互联网的商机开始出现任何私人企业以组织的出现,任何产品以企业推入市场都是要达到挣钱的目的,所以这些互联网企业也一样需要实现盈利,个人查阅资料能追溯到的互联网变现,发生在1998极致奢华!Caviar全新限定版华为Mate40Pro以奢华材料打造智能手机和配件闻名的俄罗斯品牌Caviar,近日推出了九天之上系列。为庆祝我国探月工程载人航天工程火星探测工程空间站突破,以及第一辆火星车祝融号成功降落火星,九天之上盘点国产手机的导航手势体验!双侧返回是亮点,单手党都默默点赞目前手机已经进入全面屏时代,用户日常用机习惯和用机小技巧都发生了很大变化。全面屏手机摈弃任何正面按键,手机系统也衍生出诸多用机导航方式。例如iPhone有经典的悬浮球功能,官方称之MacBook廉价扩容方案?闪迪至尊高速酷邃USB3。0闪存盘一百元不到的扩容方案我的生产力工具是MacBook,大家都知道MacBook的硬盘有多贵,如何科学扩容甚至成了一门必修的学问。我用MacBook随便剪个片子就几十G了,512G的容XilisoftiPadMagicPlatinum制作铃声?将联系人传输到计算机设备XilisoftiPadMagicPlatinumforMac可以将几乎所有主流的视频音频格式,包括AVIMPEGWMVDivXMP4H。264AVCAVCHDMKVRMMOVXvWave7Research全球缺芯正影响除苹果之外的所有手机制造商Wave7Research援引消息人士的话称困扰智能手机行业的组件与芯片短缺状况,正在影响除苹果之外的所有厂商。其在一份新报告中指出,供应短缺正在影响低成本的Android手机制造荣耀Magic3发布会上没有说的事(3)隐藏在荣耀手机里的国产芯片荣耀如果能够继承华为的衣钵,重新夺回高端手机市场,也不是什么不好的事!尤其是当我发现,荣耀在手机的主控芯片里面,并没有完全采用高通的全家桶,而是使用了部分国产芯片进行替代。这是eW聊聊笔记本电脑界的理财产品今年的笔电行业属于旱的旱死,涝的涝死。头部渠道手握货源,像中东卖石油的土豪一样牛气冲天。而渠道小商贩,只能和黄牛博弈,靠着各种关系拉点货来养家糊口。笔记本电脑曾经是个贬值产品,如今