当前位置: 首页 > news >正文

网站综合开发怎么做网站开发文档的示例

网站综合开发怎么做,网站开发文档的示例,l流行wordpress,外贸流程和专业知识点点击上方“AI遇见机器学习”#xff0c;选择“星标”公众号重磅干货#xff0c;第一时间送达这次我们主要来简单的讨论一下在MongoDB中如何更新数据(修改数据)#xff0c;删除数据#xff0c;以及如何通过Python调用MongoDB。一、简单使用MongoDB操作数据| a.更新数据| i.数… 点击上方“AI遇见机器学习”选择“星标”公众号重磅干货第一时间送达这次我们主要来简单的讨论一下在MongoDB中如何更新数据(修改数据)删除数据以及如何通过Python调用MongoDB。一、简单使用MongoDB操作数据| a.更新数据| i.数据更新更新集合中的数据使用update(CONDITION,OPERATE)命令它接收两个参数前者为条件后者为进行更新的操作: db.asd.insert({x:1})WriteResult({ nInserted : 1 }) db.asd.find(){ _id : ObjectId(5961087fd4fd4ce8ff6ca18a), x : 1 } db.asd.update({x:1},{x:2})WriteResult({ nMatched : 1, nUpserted : 0, nModified : 1 }) db.asd.find(){ _id : ObjectId(5961087fd4fd4ce8ff6ca18a), x : 2 }如上例将文档中有x:1的改成x:2。| ii.局部更新有些时候我们需要对文档进行局部更新MongoDB中默认一般情况的修改会对整个文档造成影响 db.asd.insert({x:1,y:1,z:1})WriteResult({ nInserted : 1 }) db.asd.update({x:1},{y:2})WriteResult({ nMatched : 1, nUpserted : 0, nModified : 1 }) db.asd.find(){ _id : ObjectId(59610918d4fd4ce8ff6ca18b), y : 2 }例如上面的例子我们只想对{x:1,y:1,z:1}进行修改使得y:1变为y:2但如果直接使用update()会使得整个文档被修改的只剩下y:1。这个时候就需要使用$set来对文档进行局部更新 db.asd.update({x:1},{$set:{y:2}})WriteResult({ nMatched : 1, nUpserted : 0, nModified : 1 }) db.asd.find(){ _id : ObjectId(596109e0d4fd4ce8ff6ca18c), x : 1, y : 2, z : 1 }| iii.更新不存在的数据有时候我们需要直接更新一条数据库中并不存在的数据这个时候仅仅用原来的update()的使用方法是达不到效果的我们需要在括号里面加上第三个参数(Bool)来实现我们想要的效果 db.zyzy.find() db.zyzy.update({x:1},{y:1},true)WriteResult({        nMatched : 0,        nUpserted : 1,        nModified : 0,        _id : ObjectId(5961b6f09f1fbf45940b7f04)}) db.zyzy.find(){ _id : ObjectId(5961b6f09f1fbf45940b7f04), y : 1 }| iv.更新多条数据update在使用的时候默认只更新被查找到的第一条数据这是为了防止用户进行误操作。 for(i0;i3;i)db.zyzy.insert({x:1})WriteResult({ nInserted : 1 })#插入三条x为1的文档 db.zyzy.update({x:1},{x:2})WriteResult({ nMatched : 1, nUpserted : 0, nModified : 1 }) db.zyzy.find(){ _id : ObjectId(5961b7fe540435d89b5c5eca), x : 2 }{ _id : ObjectId(5961b7fe540435d89b5c5ecb), x : 1 }{ _id : ObjectId(5961b7fe540435d89b5c5ecc), x : 1 }发现只有第一个文档被更新了。要同时更新多条数据就需要使用update()的第四个也是最后一个参数(Bool)。 db.zyzy.update({x:1},{$set:{x:2}},false,true)WriteResult({ nMatched : 2, nUpserted : 0, nModified : 2 }) db.zyzy.find(){ _id : ObjectId(5961b7fe540435d89b5c5eca), x : 2 }{ _id : ObjectId(5961b7fe540435d89b5c5ecb), x : 2 }{ _id : ObjectId(5961b7fe540435d89b5c5ecc), x : 2 }这里的更新方式通常都是使用局部更新的方式也是为了防止误操作。| b.数据删除要删除集合中的数据我们使用remove()方法它接收一个参数作为查找删除数据的条件该参数不能为空。如果想清除集合里面的所有数据可以直接时候用drop()废除集合。 db.test_collection.find(){ _id : ObjectId(5961b9d8540435d89b5c5ecd), x : 1 }{ _id : ObjectId(5961b9e9540435d89b5c5ece), x : 1 }{ _id : ObjectId(5961b9e9540435d89b5c5ecf), x : 1 }{ _id : ObjectId(5961b9e9540435d89b5c5ed0), x : 1 } db.test_collection.remove({x:1})WriteResult({ nRemoved : 4 }) db.test_collection.find()但也有时候我们只想删除被找到的第一条数据这个时候可以利用remove的第二个参数 for(i0;i10;i)db.test_collection.insert({x:i})WriteResult({ nInserted : 1 }) db.test_collection.remove({x:{$type:1}},true)WriteResult({ nRemoved : 1 }) db.test_collection.find(){ _id : ObjectId(5961e9c7e12ea99cbdc056a4), x : 1 }{ _id : ObjectId(5961e9c7e12ea99cbdc056a5), x : 2 }{ _id : ObjectId(5961e9c7e12ea99cbdc056a6), x : 3 }{ _id : ObjectId(5961e9c7e12ea99cbdc056a7), x : 4 }...二、安装pymongo与连接MongoDB接下来我们介绍如何在Python中使用MongoDB。要通过Pyhton使用MongoDB我们首先需要下载Python用于操作MongoDB的库pymongopip install pymongo然后就可以在python中导入这个库了不过通常我们只是导入它的驱动from pymongo import MongoClien导入之后我们在Python中通过下面一段代码获取MongoDB的操作对象clientMongoClient(127.0.0.1,27017) #建立和数据库的连接前者是MongoDB服务所在的地址后者是对应的端口号db_authclient.admin #指定使用哪个数据库的账号这里用的是数据库admindb_auth.authenticate(admin,password) #权限认证第一个参数是账号第二个参数是密码#若连接的数据库不需要账号上述两条可以省略。db_nametest #要连接的数据库的名字db client[db_name] #获得数据库操作对象也可以写作client.db_namecollection_useractiondb[useraction] #获得数据库的集合操作对象集合名为“useraction”获得集合操作对象之后我们就可以通过这个集合操作对象对数据库的集合进行操作以上例为例就是对名为MongoDB的数据库“test”中名为“useraction”的集合进行操作。三、在Python中操作MongoDB| a.插入数据往集合插入数据的方法有两种分别是insert()和save()对应的就是MongoDB Shell里面的insert()和save()。它们之间的区别就是insert()在插入和原来信息重复的数据对象的时候会报错而save()则会将原来的数据对象进行更新。当然这里的重复指的是唯一索引的重复类似于“_id”的重复。collection_useraction.insert({x:1}用shell查看发现插入成功 db.useraction.find(){ _id : ObjectId(59635e3a867e573b0c7c8d71), x : 1 }collection_useraction.insert({x:1,_id:1})...pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: test.useraction index: _id_ dup key: { : 1 }#在已有_id为1的数据的时候插入一条上述数据发现编译器报错在python中的insertMany()方法语法为insert_many()可以发现python中对MongoDB插入数据的方式与MongoDB Shell没有太多区别。| b.更新数据更新数据使用update()方法语法格式如下update(criteria, objNew, upsert, mult)criteria: 需要被更新的条件表达式objNew: 更新表达式upsert: 如目标记录不存在是否插入新文档。multi: 是否更新多个文档。示例collection_useraction.update({x:{$lt:2}},{$set:{y:2}},upsertTrue发现操作符的使用方式也与shell没有太多区别。| c.删除数据| i.删除集合要删除一个集合有多种方法方法一是用:db.collection_name.drop()这个地方的collection_name指的是这个集合在MongoDB数据库里面的名字例如我们上面的例子它的名字就是“useraction”而不是“collection_useraction”。另外一个方法是用collection_operator.drop()collection_operator指的就是python中该集合的操作对象如上例就是“collection_useraction”而不是集合名字“useraction”| ii.删除文档删除文档使用remove()方法同样有两种方式调用与上文中删除集合类似所以这里只讲一种方法collection_operator.remove(self, spec_or_idNone, multiTrue, **kwargs)第一个参数表示要删除的文档的搜索条件或者该文档的id默认为None。multi表示是否删除多个为False的时候一次只删除一个。当括号为空的时候会删除集合内所有文档这一点与shell不同。collection_useraction.remove({x:1})表示删除所有集合中“x”值为1的文档。| d.查找数据| i.find与cursor我们先假设我们在集合中插入了100条信息i0while i100:    collection_useraction.insert({x:i,y:100-i})    i1在Python中查找用的方法同样也是find()使用方式也与shell相同当我们需要查找并遍历查找结果的时候可以用这样的方式:for u in collection_useraction.find({x:{$exists:True}}):    print u{uy: 100, ux: 0, u_id: ObjectId(59636678867e5717981f18c1)}{uy: 99, ux: 1, u_id: ObjectId(59636678867e5717981f18c2)}{uy: 98, ux: 2, u_id: ObjectId(59636678867e5717981f18c3)}...这是因为语句collection_useraction.find({x:{$exists:True}})返回了一个可供迭代的对象用type()方法可以看到这个对象的类型:cursorcollection_useraction.find({x:{$exists:True}})print type(cursor)这个对象同时还支持我们直接用索引访问:print cursor[10]{uy: 90, ux: 10, u_id: ObjectId(59636678867e5717981f18cb)}并且还支持一些shell的方法print cursor.explain(){uexecutionStats: {uexecutionTimeMillis: 0, unReturned: 100, utotalKeysExamined: 0, uallPlansExecution: [], uexecutionSuccess: True, uexecutionStages: {uneedYield: 0, udirection: uforward, usaveState: 0, urestoreState: 0, uisEOF: 1, udocsExamined: 100, unReturned: 100, uneedTime: 1, ufilter: {ux: {u$exists: True}}, uexecutionTimeMillisEstimate: 0, uinvalidates: 0, uworks: 102, uadvanced: 100, ustage: uCOLLSCAN}, utotalDocsExamined: 100}, uqueryPlanner: {uparsedQuery: {ux: {u$exists: True}}, urejectedPlans: [], unamespace: utest.useraction, uwinningPlan: {ufilter: {ux: {u$exists: True}}, udirection: uforward, ustage: uCOLLSCAN}, uindexFilterSet: False, uplannerVersion: 1}, uok: 1.0, userverInfo: {uhost: uiPhone, uversion: u3.4.6, uport: 27017, ugitVersion: uc55eb86ef46ee7aede3b1e2a5d184a7df4bfb5b5}}并且可以对它进行深拷贝ggcursor.clone()aacursorprint aa cursorprint gg cursorTrueFalse若是想一次只查找一条信息可以使用方法find_one()。| ii.查询特定键当我们只想查询指定的关键字的值的时候就需要用到find()的第二个参数“projection”:cursorcollection_useraction.find({},{x:1})print cursor[10]{ux: 10, u_id: ObjectId(59636678867e5717981f18cb)}cursorcollection_useraction.find({},projection{x:1})print cursor[10]{ux: 10, u_id: ObjectId(59636678867e5717981f18cb)}| iii.排序排序用的同样是方法sort()但是使用方式与shell略有不同useraction.find().sort([(KEY,)])“KEY”指作为排序基准的关键字的名字则表示排序的方法有两个选项分别是pymongo.ASCENDING(升序可用1代替)和pymongo.DESCENDING(降序可用-1代替)对象示例for u in collection_useraction.find().sort([(x,pymongo.DESCENDING)]):    print u{uy: 1, ux: 99, u_id: ObjectId(59636679867e5717981f1924)}{uy: 2, ux: 98, u_id: ObjectId(59636679867e5717981f1923)}{uy: 3, ux: 97, u_id: ObjectId(59636679867e5717981f1922)}{uy: 4, ux: 96, u_id: ObjectId(59636679867e5717981f1921)}...也可以直接使用find()方法中的sort参数for u in collection_useraction.find(sort[(x,pymongo.DESCENDING)]):    print u| iv.切片在shell中我们使用skip()与limit()方法来对查询结果进行切片python中一样可以:for u in collection_useraction.find().skip(90).limit(3):    print u{uy: 10, ux: 90, u_id: ObjectId(59636679867e5717981f191b)}{uy: 9, ux: 91, u_id: ObjectId(59636679867e5717981f191c)}{uy: 8, ux: 92, u_id: ObjectId(59636679867e5717981f191d)}skip与limit同样支持参数写法。不仅如此我们还可以对查询结果使用索引切片for u in collection_useraction.find()[2:5]:    print u{uy: 98, ux: 2, u_id: ObjectId(59636678867e5717981f18c3)}{uy: 97, ux: 3, u_id: ObjectId(59636678867e5717981f18c4)}{uy: 96, ux: 4, u_id: ObjectId(59636678867e5717981f18c5)}| v.正则查询在查询文本的时候除了MongoDB原有的文本查询格式我们还可以使用正则表达式patternre.compile(raa*)for u in collection_useraction.find({x:pattern}):    print u{ux: uaa bb cc dd, u_id: ObjectId(596377bd687384c0a1b9d5e9)}#下面这个查询方式显然shell中也是支持的for u in collection_useraction.find({x:{$regex:raa b{2} c{1,3} dd}}):    print u{ux: uaa bb cc dd, u_id: ObjectId(596377bd687384c0a1b9d5e9)}推荐阅读干货|学术论文怎么写资源|NLP书籍及课程推荐(附资料下载)干货|全面理解N-Gram语言模型资源|《Machine Learning for OpenCV》书籍推荐欢迎关注我们看通俗干货
http://www.pierceye.com/news/628408/

相关文章:

  • 三原网站建设网易企业邮箱登录v
  • 为网站营销好处wordpress tar.xz
  • wordpress建站比较淘宝客网站怎么建设
  • 网站结构有哪些安徽省建设工程信息网官方网站
  • 如何查看网站是否备案直播网站怎么做啊
  • 广西做网站的公司投资融资理财网站模板
  • 做网站的颜色游戏推广员拉人犯法吗
  • 金融审核网站制作站长之家网址ip查询
  • 石家庄做家教网站网络营销网站建设
  • 怎么做淘宝网站赚钱吗怎样提高百度推广排名
  • 购物网站建设成本u9u8网站建设
  • 抚州市住房和城乡建设局网站手机网站素材
  • 用dw做音乐网站模板策划公司收费明细
  • 大气手机网站模板免费下载南昌seo排名
  • 做卖衣服网站源代码seo搜索引擎优化名词解释
  • 东营免费建网站网络运维必备知识
  • 盐城建设网站备案 网站负责人
  • 外贸营销网站怎么建设网站域名注册证书
  • 安徽网站建设首选-晨飞网络甘肃泾川县门户网站两学一做
  • 360°网站标签旋转显示特效建筑设计专业比较好的学校
  • 郫县建设局网站中文wordpress模版
  • 塔里木油田公司档案馆网站建设研究响应式网站建设教程
  • wordpress侧边栏怎么加php代码重庆seo优化公司
  • 自做建材配送网站做的比较好的游戏网站
  • 建设网站公司兴田德润在哪里秦皇岛海港区
  • 做网站阜阳百度投放广告
  • 北京互联网金融公司排名网站栏目优化
  • 教育网站解决方案用wordpress制作表单
  • 整站wordpress下载phpcms 网站标题
  • 湛江市建设局官网站品牌网络营销方法分析