网站备案级别,济南国画网站济南网站建设公司,wordpress官使用方法,设计科技有限公司一、MongoDB - 连接1.启动 MongoDB 服务只需要在 MongoDB 安装目录的 bin 目录下执行 mongod 即可执行启动操作后#xff0c;mongodb 在输出一些必要信息后不会输出任何信息#xff0c;之后就等待连接的建立#xff0c;当连接被建立后#xff0c;就会开始打印日志信息。可以… 一、MongoDB - 连接1.启动 MongoDB 服务 只需要在 MongoDB 安装目录的 bin 目录下执行 mongod 即可 执行启动操作后mongodb 在输出一些必要信息后不会输出任何信息之后就等待连接的建立当连接被建立后就会开始打印日志信息。可以使用 MongoDB shell 来连接 MongoDB 服务器可以使用 PHP 来连接 MongoDB。标准 URI 连接语法mongodb://[username:password]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]mongodb:// 这是固定的格式必须要指定。username:password 可选项如果设置在连接数据库服务器之后驱动都会尝试登陆这个数据库host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集请指定多个主机地址。portX 可选的指定端口如果不填默认为27017/database 如果指定username:password连接并验证登陆指定数据库。若不指定默认打开 test 数据库。?options 是连接选项。如果不使用/database则前面需要加上/。所有连接选项都是键值对namevalue键值对之间通过或;分号隔开2.实例使用默认端口来连接 MongoDB 的服务。mongodb://localhost通过 shell 连接 MongoDB 服务$ ./mongoMongoDB shell version: 3.0.6connecting to: test...这时候你返回查看运行 ./mongod 命令的窗口可以看到是从哪里连接到MongoDB的服务器MongoDB 连接命令格式使用用户名和密码连接到 MongoDB 服务器你必须使用 username:passwordhostname/dbname 格式username为用户名password 为密码。使用用户名和密码连接登陆到默认数据库$ ./mongoMongoDB shell version: 3.0.6connecting to: test使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上。输出结果如下所示 mongodb://admin:123456localhost/...使用用户名和密码连接登陆到指定数据库格式如下mongodb://admin:123456localhost/test二、MongoDB 数据库MongoDB 创建数据库语法MongoDB 创建数据库的语法格式如下use DATABASE_NAME如果数据库不存在则创建数据库否则切换到指定数据库。实例以下实例我们创建了数据库cara use caraswitched to db cara dbcara 如果你想查看所有数据库可以使用 show dbs 命令 show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB 可以看到我们刚创建的数据库 cara 并不在数据库的列表中 要显示它我们需要向 cara 数据库插入一些数据。 db.cara.insert({name:欢子})WriteResult({ nInserted : 1 }) show dbsadmin 0.000GBcara 0.000GBconfig 0.000GBlocal 0.000GB MongoDB 中默认的数据库为 test如果你没有创建新的数据库集合将存放在 test 数据库中。MongoDB 删除数据库语法MongoDB 删除数据库的语法格式如下db.dropDatabase()删除当前数据库默认为 test你可以使用 db 命令查看当前数据库名。实例以下实例我们删除了数据库 cara。首先查看所有数据库 show dbsadmin 0.000GBcara 0.000GBconfig 0.000GBlocal 0.000GB 接下来我们切换到数据库cara use caraswitched to db cara执行删除命令 db.dropDatabase(){ dropped : cara, ok : 1 }最后我们再通过 show dbs 命令数据库是否删除成功 show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB 删除集合集合删除语法格式如下db.collection.drop()以下实例删除了 cara 数据库中的集合 cara use caraswitched to db cara show tables db.cara.insert({name:欢子})WriteResult({ nInserted : 1 }) show tablescara db.cara.drop()true show tables 三、MongoDB 集合MongoDB 创建集合MongoDB 中使用 createCollection() 方法来创建集合。语法格式db.createCollection(name, options)参数说明name: 要创建的集合名称options: 可选参数, 指定有关内存大小及索引的选项options 可以是如下参数在插入文档时MongoDB 首先检查固定集合的 size 字段然后检查 max 字段。实例在 test 数据库中创建 cara 集合 use testswitched to db test db.createCollection(cara){ ok : 1 } 如果要查看已有集合可以使用 show collections 命令 show collectionscara 下面是带有几个关键参数的 createCollection() 的用法创建固定集合 mycol整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。 db.createCollection(mycol, { capped : true, autoIndexId : true, size : 6142800, max : 10000 } ){ ok : 1 }在 MongoDB 中你不需要创建集合。当你插入一些文档时MongoDB 会自动创建集合。 db.mycol2.insert({name : 菜鸟教程}) show collections
mycol2...MongoDB 删除集合MongoDB 中使用 drop() 方法来删除集合。语法格式db.collection.drop()参数说明无返回值如果成功删除选定集合则 drop() 方法返回 true否则返回 false。实例在数据库 test 中我们可以先通过 show collections 命令查看已存在的集合 dbtest show collectionscara 接着删除集合 cara : db.cara.drop()true show collections 从结果中可以看出 cara 集合已被删除四、MongoDB 文档MongoDB 插入文档插入文档MongoDB 使用 insert() 或 save() 方法向集合中插入文档语法如下db.COLLECTION_NAME.insert(document)实例以下文档可以存储在 MongoDB 的 cara 数据库 的 col 集合中 db.col.insert({title:study,... description:mongodb study,... by:cara,... url:http://cara.com,... tags:[mongodb,database,NoSQL],... likes:101... })WriteResult({ nInserted : 1 }) 以上实例中 col 是我们的集合名如果该集合不在该数据库中 MongoDB 会自动创建该集合并插入文档。查看已插入文档 db.col.find(){ _id : ObjectId(5b553cd97dc80c93e5d47b35), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101 } 我们也可以将数据定义为一个变量如下所示 document({title:study,... description:mongodb study,... by:cara,... url:http://cara.com,... tags:[mongodb,database,NoSQL],... likes:101... }){ title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101} 执行插入操作 db.col.insert(document)WriteResult({ nInserted : 1 })再次查看 db.col.find(){ _id : ObjectId(5b553cd97dc80c93e5d47b35), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101 }{ _id : ObjectId(5b553e1a7dc80c93e5d47b36), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101 } MongoDB 更新文档MongoDB 使用 update() 和 save() 方法来更新集合中的文档。update() 方法update() 方法用于更新已存在的文档。语法格式如下db.collection.update(query,update,{upsert: boolean,multi: boolean,writeConcern: document})参数说明query : update的查询条件类似sql update查询内where后面的。update : update的对象和一些更新的操作符如$,$inc...等也可以理解为sql update查询内set后面的upsert : 可选这个参数的意思是如果不存在update的记录是否插入objNew,true为插入默认是false不插入。multi : 可选mongodb 默认是false,只更新找到的第一条记录如果这个参数为true,就把按条件查出来多条记录全部更新。writeConcern :可选抛出异常的级别。之前在col集合中写入了一些数据现在我们通过 update() 方法来更新标题(title): db.col.update({title:study},{$set:{title:mystudy}})WriteResult({ nMatched : 1, nUpserted : 0, nModified : 1 }) db.col.find().pretty(){ _id : ObjectId(5b553cd97dc80c93e5d47b35), title : mystudy, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101}{ _id : ObjectId(5b553e1a7dc80c93e5d47b36), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101} 可以看到标题(title)由原来的 study 更新为了 mystudy。以上语句只会修改第一条发现的文档如果你要修改多条相同的文档则需要设置 multi 参数为 true。db.col.update({title:MongoDB 教程},{$set:{title:MongoDB}},{multi:true}) db.col.update({by:cara},{$set:{by:huanzi}},{multi:true})WriteResult({ nMatched : 2, nUpserted : 0, nModified : 2 }) db.col.find().pretty(){ _id : ObjectId(5b553cd97dc80c93e5d47b35), title : mystudy, description : mongodb study, by : huanzi, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101}{ _id : ObjectId(5b553e1a7dc80c93e5d47b36), title : study, description : mongodb study, by : huanzi, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101}save() 方法save() 方法通过传入的文档来替换已有文档。语法格式如下db.collection.save(document,{writeConcern: document})参数说明document : 文档数据。writeConcern :可选抛出异常的级别。更多实例只更新第一条记录db.col.update( { count : { $gt : 1 } } , { $set : { test2 : OK} } );全部更新db.col.update( { count : { $gt : 3 } } , { $set : { test2 : OK} },false,true );只添加第一条db.col.update( { count : { $gt : 4 } } , { $set : { test5 : OK} },true,false );全部添加加进去:db.col.update( { count : { $gt : 5 } } , { $set : { test5 : OK} },true,true );全部更新db.col.update( { count : { $gt : 15 } } , { $inc : { count : 1} },false,true );只更新第一条记录db.col.update( { count : { $gt : 10 } } , { $inc : { count : 1} },false,false );MongoDB 删除文档MongoDB remove()函数是用来移除集合中的数据。MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确这是一个比较好的习惯。语法remove() 方法的基本语法格式如下所示db.collection.remove(query,justOne)如果你的 MongoDB 是 2.6 版本以后的语法格式如下db.collection.remove(query,{justOne: boolean,writeConcern: document})参数说明query :可选删除的文档的条件。justOne : 可选如果设为 true 或 1则只删除一个文档。writeConcern :可选抛出异常的级别。实例之前我们执行两次插入操作使用 find() 函数查询数据 db.col.find(){ _id : ObjectId(5b553cd97dc80c93e5d47b35), title : mystudy, description : mongodb study, by : huanzi, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101 }{ _id : ObjectId(5b553e1a7dc80c93e5d47b36), title : study, description : mongodb study, by : huanzi, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101 } 接下来我们移除 by 为 huanzi 的文档 db.col.remove({by:huanzi})WriteResult({ nRemoved : 2 })# 删除了两条数 db.col.find() # 没有数据如果你只想删除第一条找到的记录可以设置 justOne 为 1如下所示db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)如果你想删除所有数据可以使用以下方式类似常规 SQL 的 truncate 命令db.col.remove({})
db.col.find()
remove() 方法已经过时了现在官方推荐使用 deleteOne() 和 deleteMany() 方法。如删除集合下全部文档db.inventory.deleteMany({})删除 status 等于 A 的全部文档db.inventory.deleteMany({ status : A })删除 status 等于 D 的一个文档db.inventory.deleteOne( { status: D } )MongoDB 查询文档MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。语法MongoDB 查询数据的语法格式如下db.collection.find(query, projection)query 可选使用查询操作符指定查询条件projection 可选使用投影操作符指定返回的键。查询时返回文档中所有键值 只需省略该参数即可默认省略。如果你需要以易读的方式来读取数据可以使用 pretty() 方法语法格式如下db.col.find().pretty()pretty() 方法以格式化的方式来显示所有文档。以下实例我们查询了集合 col 中的数据 db.col.insert({title:study, description:mongodb study, by:cara, url:http://cara.com, tags:[mongodb,database,NoSQL], likes:101 })WriteResult({ nInserted : 1 }) db.col.find().pretty(){ _id : ObjectId(5b55464c7dc80c93e5d47b37), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101} 除了 find() 方法之外还有一个 findOne() 方法它只返回一个文档。MongoDB AND 条件MongoDB 的 find() 方法可以传入多个键(key)每个键(key)以逗号隔开即常规 SQL 的 AND 条件。语法格式如下db.col.find({key1:value1, key2:value2}).pretty()实例以下实例通过 by 和 title 键来查询 db.col.find({by:cara,title:study}).pretty(){ _id : ObjectId(5b55470c7dc80c93e5d47b39), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101} 以上实例中类似于 WHERE 语句WHERE bycara AND titlestudyMongoDB OR 条件MongoDB OR 条件语句使用了关键字 $or,语法格式如下db.col.find({$or: [ {key1: value1}, {key2:value2}]}).pretty()实例以下实例中我们演示了查询键 by 值为 cara 或键 title 值为 study 的文档。 db.col.find({$or:[{by:cara},{title:study}]}).pretty(){ _id : ObjectId(5b55470c7dc80c93e5d47b39), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101}AND 和 OR 联合使用以下实例演示了 AND 和 OR 联合使用类似常规 SQL 语句为where likes50 AND (by cara OR title study) db.col.find({likes:{$gt:50},$or:[{by:cara},{title:study}]}).pretty(){ _id : ObjectId(5b55470c7dc80c93e5d47b39), title : study, description : mongodb study, by : cara, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 101} 五、MongoDB 条件操作符描述条件操作符用于比较两个表达式并从mongoDB集合中获取数据。MongoDB中条件操作符有() 大于 - $gt() 小于 - $lt() 大于等于 - $gte( ) 小于等于 - $lte我们使用的数据库名称为cara 我们的集合名称为col以下为我们插入的数据。为了方便测试我们可以先使用以下命令清空集合 col 的数据db.col.remove({})插入以下数据 db.col.insert({title:study1, description:mongodb study, by:cara1, url:http://cara.com, tags:[mongodb,database,NoSQL], likes:200 })WriteResult({ nInserted : 1 }) db.col.insert({title:study2, description:mongodb study, by:cara2, url:http://cara.com, tags:[mongodb,database,NoSQL], likes:150 })WriteResult({ nInserted : 1 }) db.col.insert({title:study3, description:mongodb study, by:cara3, url:http://cara.com, tags:[mongodb,database,NoSQL], likes:100 })WriteResult({ nInserted : 1 })使用find()命令查看数据 db.col.find(){ _id : ObjectId(5b554b9e7dc80c93e5d47b3a), title : study1, description : mongodb study, by : cara1, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 200 }{ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 }{ _id : ObjectId(5b554bd47dc80c93e5d47b3c), title : study3, description : mongodb study, by : cara3, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 100 } MongoDB () 大于操作符 - $gt如果你想获取 col 集合中 likes 大于 100 的数据你可以使用以下命令db.col.find({likes : {$gt : 100}})类似于SQL语句Select * from col where likes 100;输出结果 db.col.find({likes:{$gt : 100}}){ _id : ObjectId(5b554b9e7dc80c93e5d47b3a), title : study1, description : mongodb study, by : cara1, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 200 }{ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 } MongoDB大于等于操作符 - $gte如果你想获取col集合中 likes 大于等于 100 的数据你可以使用以下命令db.col.find({likes : {$gte : 100}})类似于SQL语句Select * from col where likes 100;输出结果 db.col.find({likes : {$gte : 100}}){ _id : ObjectId(5b554b9e7dc80c93e5d47b3a), title : study1, description : mongodb study, by : cara1, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 200 }{ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 }{ _id : ObjectId(5b554bd47dc80c93e5d47b3c), title : study3, description : mongodb study, by : cara3, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 100 } MongoDB () 小于操作符 - $lt如果你想获取col集合中 likes 小于 150 的数据你可以使用以下命令db.col.find({likes : {$lt : 150}})类似于SQL语句Select * from col where likes 150;输出结果 db.col.find({likes : {$lt : 150}}){ _id : ObjectId(5b554bd47dc80c93e5d47b3c), title : study3, description : mongodb study, by : cara3, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 100 } MongoDB () 小于操作符 - $lte如果你想获取col集合中 likes 小于等于 150 的数据你可以使用以下命令db.col.find({likes : {$lte : 150}})类似于SQL语句Select * from col where likes 150;输出结果 db.col.find({likes : {$lte : 150}}){ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 }{ _id : ObjectId(5b554bd47dc80c93e5d47b3c), title : study3, description : mongodb study, by : cara3, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 100 } MongoDB 使用 () 和 () 查询 - $lt 和 $gt如果你想获取col集合中 likes 大于100小于 200 的数据你可以使用以下命令db.col.find({likes : {$lt :200, $gt : 100}})类似于SQL语句Select * from col where likes100 AND likes200;输出结果 db.col.find({likes : {$lt :200, $gt : 100}}){ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 } 一些简写说明$gt -------- greater than
$gte --------- gt equal
$lt -------- less than
$lte --------- lt equal
$ne ----------- not equal !
$eq -------- equal MongoDB $type 操作符$type操作符是基于BSON类型来检索集合中匹配的数据类型并返回结果。MongoDB 中可以使用的类型如下表所示类型数字备注Double1String2Object3Array4Binary data5Undefined6已废弃。Object id7Boolean8Date9Null10Regular Expression11JavaScript13Symbol14JavaScript (with scope)1532-bit integer16Timestamp1764-bit integer18Min key255Query with -1.Max key127MongoDB 操作符 - $type 实例如果想获取 col 集合中 title 为 String 的数据你可以使用以下命令db.col.find({title : {$type : 2}}) db.col.find({title : {$type : 2}}){ _id : ObjectId(5b554b9e7dc80c93e5d47b3a), title : study1, description : mongodb study, by : cara1, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 200 }{ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 }{ _id : ObjectId(5b554bd47dc80c93e5d47b3c), title : study3, description : mongodb study, by : cara3, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 100 } 六、MongoDB Limit与Skip方法MongoDB Limit() 方法如果你需要在MongoDB中读取指定数量的数据记录可以使用MongoDB的Limit方法limit()方法接受一个数字参数该参数指定从MongoDB中读取的记录条数。语法limit()方法基本语法如下所示db.COLLECTION_NAME.find().limit(NUMBER)实例集合 col 中的数据如下{ _id : ObjectId(5b554b9e7dc80c93e5d47b3a), title : study1, description : mongodb study, by : cara1, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 200 }{ _id : ObjectId(5b554bc37dc80c93e5d47b3b), title : study2, description : mongodb study, by : cara2, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 150 }{ _id : ObjectId(5b554bd47dc80c93e5d47b3c), title : study3, description : mongodb study, by : cara3, url : http://cara.com, tags : [ mongodb, database, NoSQL ], likes : 100 }显示查询文档中的两条记录 db.col.find({},{title:1,_id:0}).limit(2){ title : study1 }{ title : study2 } 注如果没有指定limit()方法中的参数则显示集合中的所有数据。MongoDB Skip() 方法我们除了可以使用limit()方法来读取指定数量的数据外还可以使用skip()方法来跳过指定数量的数据skip方法同样接受一个数字参数作为跳过的记录条数。语法skip() 方法脚本语法格式如下db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)实例以下实例只会显示第二条文档数据 db.col.find({},{title:1,_id:0}).limit(1).skip(1){ title : study2 } 注:skip()方法默认参数为 0 。 转载于:https://blog.51cto.com/13362895/2148947