MongoDB的启动:
- 启动MongoDB的服务
- 连接本地MongoDB的数据库
操作:- 在MongoDB/bin目录下打开命令窗,shift+鼠标右键
- 输入命令:
mongod.exe --dbpath 你创建的MongoDB的db路径 - 在MongoDB/Bin目录下新打开一个命令窗口,输入命令:
mongo.exe - 连接成功会有提示
注意:MongoDB的端口号:默认是27017
MySQL的端口号默认是3306
MongoDB的指令:
- 查看当前数据库版本号:
db.version()
2 .查看当前所在的库:
db
默认是test数据库 - 查看数据库连接的地址:
db.getMongo() - 查看所有的数据库:
show databases
注意:数据库中如果没有数据,则不显示 - 切换数据库:
use 数据库名
注意:如果切换到一个不存在的数据库,则会先创建再切入 - 创建集合:
db.createCollection(‘集合名’) - 查看集合:
show tables / show collections - 插入文档:
db.集合名.insert({‘k1’:’v1’,‘k2’:’v2’,…}) / db.集合名.save({}) - 删除当前所在的数据库:
db.dropDatabase() - 查询数据:
db.集合名.find() - 删除集合:
db.students.drop() - 更新数据/修改数据:
update(query,update,upsert,multi)
query:条件(lt:小于;gt:大于;lte:小于等于;gte:大于等于;eq:等于;ne:不等于;)
update:要更改成的对象
upsert:可选参数,是一个布尔值,作用:是否插入不存在的更新数据
multi:可选参数,是一个布尔值,作用:是否将查询出来的所有符合条件的数据全部更新 - 删除文档:remove(query)方法:
db.集合名.remove() 清空文档
db.集合名.remove({条件}) 删除所有符合条件的文档
db.集合名.remove({条件},1) 删除符合条件的1条文档, 只能删除1个,数值无论填几都只删除1条. - 查询文档:
find(query)方法
注意:使用find()查询出来的数据比较乱,不容易读取,所以find()通常和pretty()结合使用
pretty()方法 格式化显示
findOne() 只查询一条符合条件的数据,并且格式化显示,不能再使用pretty()方法 - MongoDB中and条件如何使用:
MySQL: select * from 表 where q1= xxx and q2=xxx and …
MongoDB: db.集合名.find({k1:v1,k2:v2,…}) - MongoDB中or条件如何使用:
MySQL: select * from 表 where q1=xxx or q2=xxx or …
MongoDB: db.集合名.find({k1:v1,$or:[{k2:v2},{k3:v3},…]}) - MongoDB中and和or如何同时使用:
MySQL: select * from table where q1=xxx and(q2=xxx or q3=xxx or …)
MongoDB: db.集合名.find({k1:v1,$or:[{k2:v2},{k3:v3},…]) - MongoDB中如何做到限制查询
MySQL: select * from table limit 2,4
MongoDB: db.集合名.find().limit(n) n 表示查询出几条数据 - MongoDB中的skip()
db.集合名.find({条件}).skip(n) 跳过符合条件的n条数据,从第n+1条开始显示 - MongoDB中limit()和skip()的结合使用
db.集合名.find({条件}).skip(n).limit(m) 从第n+1条数据开始显示,显示m条数据 - MongoDB中的排序使用 ---- sort()
MySQL: select * from table order by age asc(正序,从小到大)/desc(倒序,从大到小)
MongoDB: db.集合名.find({条件}).sort({k:1(正序)/-1(倒序)}) - MongoDB中的统计方法 ----count()
MySQL: select count(*)
MongoDB: db.集合名.find({条件}).count()查询符合条件数据的数量 - MongoDB中的游标
MongoDB底层是JS引擎,所以,可以完美的执行JS操作
for(var i=1; i<=1000; i++){
db.集合名.insert({‘_id’:i, ‘title’:’python’+i, ‘content’:’hello world’+i})
} - 什么是游标
MongoDB中的游标和MySQL中的游标是非常类似的,可以通过队友表进行一系列的设置来控制查询结果,但是,游标不是查询结果,游标是查询的一个返回资源或者接口,通过这个接口可以逐条读取数据,和Python生成器类似,但是,游标会消耗内存资源,所以,在油表使用结束后,应该尽快释放掉,在mongo shell中,如果游标定义之后没有变量接收,那么,默认自动迭代20次(显示20条数据),出现此情况,我们想要查看更多的数据时,必须使用it来进行查看.
游标是有生命周期的:1.可以手动关闭 2.当游标迭代到最后一条数据时,自动关闭
调整一次出现的数据数量:DBQuery.shellBatchSize=n, n为数字,即一次出现数据的数量 - 游标的使用
(1)声明游标
var cursor=db.集合名.find() cursor即为游标
(2)next()方法,可以移动游标,取出游标的下一个文档
(3)print(cursor.next()) 返回的是一个[object BSON],BSON对象是json的二进制类型
(4)printjson(cursor.next())可以查看游标对应的数据内容
(5)hasNext():查看游标是否能够 继续移动,返回布尔值,true为能继续移动,false不能继续移动
(6)使用游标循环输出数据
where (cursor.hasNext()){
printjson(cursor.next())
}
(7)可以使用forEach()进行迭代,cursor.forEach(函数)
var cursor=db.集合名.find({条件})
var getContent = function(obj){
printjson(obj.content)
}
cursor.forEach(getContent)
(8)关闭游标
cursor.close()
这篇博客详细介绍了MongoDB的启动、连接、基本操作如查看数据库版本、切换数据库、创建集合、插入文档、删除与更新数据、查询及排序。还讨论了MongoDB中的游标使用和查询限制,包括limit()、skip()和sort()方法。此外,提到了如何在MongoDB中实现and、or条件查询。

2万+

被折叠的 条评论
为什么被折叠?



