文章目录

  • Shell操作Mongo数据库
  • 一、基础操作
  • 二、增
  • 1、创建集合
  • 2、插入文档
  • 3、拷贝数据,将数据库的数据拷贝到另一个数据库
  • 三、删
  • 1、删除当前所在的数据库
  • 2、删除集合
  • 3、删除文档
  • 四、改
  • 1、更新数据/修改数据
  • 五、查
  • 1、查询所有数据
  • 2、查询当前数据库的状态
  • 3、查询文档 find([query,是否显示此字段])
  • 4、查询某一列去重后的数据
  • 5、AND条件的使用
  • 6、OR条件的使用
  • 7、限制查询
  • 8、skip()
  • 9、分页
  • 10、模糊查询
  • 11、排序查询
  • 12、统计
  • 六、游标
  • 1. 什么是游标?
  • 2. 游标的使用
  • 3 游标的声明周期
  • Pycharm操作mongo数据库
  • 一、连接数据库
  • 二、常用方法


Shell操作Mongo数据库

一、基础操作

数据库操作

描述

db.version()

查看当前数据库的版本号

db

查看当前所在数据库

db.getMongo()

查看当前数据库链接的地址

show databases/show dbs

查看所有数据库

use 数据库名

切换数据库

show collections/show tables

查看集合

注:

  1. 查看所有数据库时,若数据库没有任何数据,则不会显示
  2. 切换数据库时,如果没有数据库则会创建数据库—数据库的隐式创建

二、增

1、创建集合

语法:db.createCollection(集合名)

2、插入文档

语法:

  1. db.集合名.insert({‘key’:‘value’})
  2. db.集合名.save({‘key’:‘value’})

注:

  1. 如果想要插入多条数据,可以将多个对象放到一个数组中
  2. 如果插入数据的集合不存在,会先创建再插入—集合的隐式创建

3、拷贝数据,将数据库的数据拷贝到另一个数据库

语法:db.copyDatabase(‘数据库1’,‘数据库2’,‘ip地址’)

三、删

1、删除当前所在的数据库

语法:db.dropDatabase()

2、删除集合

语法:db.集合名.drop()

3、删除文档

语法:remove(query, [ justOne ])

  • 删除全部文档:db.集合名.remove({})
  • 根据条件删除:db.集合名.remove(query)—删除全部符合条件的数据
  • query:必选参数,
  • justOne:可选参数,是布尔值,代表是否只删除一条数据?默认false

四、改

1、更新数据/修改数据

语法:db.集合名.update(query,update,[upsert,multi])

  • query:必选参数,条件

条件

描述

$lt

小于

$gt

大于

$eq

等于

$ne

不等于

$gte

大于等于

$lte

小于等于

  • update:必选参数,更新后的数据,默认修改整列,需要加[$set]

条件

描述

$set

设置值

$inc

增长值

$rename

重命名

$unset

删除

  • upsert:可选参数,是布尔值。作用:如果不存在update记录,是否插入更新的数据?true插入, false不插入,默认是false
  • multi:可选参数,是布尔值。作用:是否将查询出来的所有符合条件的数据全部更新?ture全部更新,false更新一条,默认是false

五、查

1、查询所有数据

语法:db.集合名.find()

2、查询当前数据库的状态

语法:db.stats()

3、查询文档 find([query,是否显示此字段])

语法:

  1. db.集合名.find(query)
  2. db.集合名.find(query,{k:1(显示)/0(不显示)})
  3. db.集合名.findOne([query,是否显示此字段])

注:

  1. find()方法查询时,查询出来的数据是一行显示的,可以使用pretty()将数据格式化输出
  2. 语法3只查询一条数据,返回的数据格式是格式化之后的形式,所以,此方法不能使用pretty()

4、查询某一列去重后的数据

语法:db.集合名.distinct(k)

5、AND条件的使用

语法:db.集合名.find({‘k1’:‘v1’,‘k2’:‘v2’…})

注:多个条件使用逗号分隔

6、OR条件的使用

关键字:$or

语法:db.集合名.find({$or:[{‘k1’:‘v1’},{‘k2’:‘v2’},…])

7、限制查询

语法:db.集合名.find().limit(n)

8、skip()

语法:db.集合名.find().skip(n)

跳过前n条数据,从第n+1条开始查询

9、分页

语法:db.集合名.find().skip(n).limit(m)

跳过前n条数据,从第n+1条开始查询,查询m条

10、模糊查询

语法:db.集合名.find(‘k’:/xxxx/)

11、排序查询

语法:db.集合名.find().sort({k:1/-1})

1代表正序(从小到大)-1代表倒序

12、统计

db.集合名.find().count()

六、游标

1. 什么是游标?

MongoDB中的游标和MySQL中的游标非常相似,可以通过对游标的一系列的设置来控制游标查询数据,游标并不是查询的结果,而是查询的一个返回资源或者接口,通过这个接口可以逐条读取数据,和PYTHON中的生成器类似,游标会消耗内存资源,所以在游标使用之后,应该尽快释放掉

在MongoDB中,如果游标被定义之后,没有使用变量接收,那么就是一个查询结果,默认自动迭代20次,可以使用【DBQuery.shellBatchSize=n】n是一个数字,即依次显示的数据量

2. 游标的使用

声明游标:var cursor=db.集合名.find()

移动游标:next(),可以取出数据

print():返回一个【Object Bson】,是Json的二进制类型

hasNext():查看游标是否能够继续移动,返回布尔值,ture/false

while(cursor.hasNext()){
	printjson(cursor.next())
}

forEash():迭代方法。cursor.forEash(函数)

var getContent=function(obj){
	printjson(obj.content)
}
cursor.forEach(getContent)

3 游标的声明周期

游标迭代到最后一条数据时,自动关闭

Pycharm操作mongo数据库

安装pymongo
pip install pymongo

一、连接数据库

步骤:

  1. 导入pymongo
    import pymongo
  2. 创建连接
    client = pymongo.MongoClient(host=‘127.0.0.1’,port=27017)

二、常用方法

(1)查询所有数据库

  • 旧:database_names()
  • 新:list_database_names()

(2)查询所有集合

  • 步骤:
    1 先进入数据库
    2 再查询集合
  • 方法:
    第一种:
    db = client[‘class’]
    db.collection_names()
    第二种:
    db = client.class
    db.list_collection_names()

(3)插入数据

  • 步骤:先进入集合,再插入数据
  • 方法:col = db[‘students’]---->col.insert({‘name’:‘xiaohong’,‘age’:20,‘height’:160})
  • 插入多条数据:col.insert([{},{}])

(4)查询数据:find()

  • 查所有:for i in col.find():print(i)
  • 查一条:findOne()
  • 条件查询
  • 限制查询:limit(n)
  • 跳过查询:skip()

(5)修改数据:

  • 修改一条:update_one()
  • 修改多条:update_many()
    update({query},{update}[,upsert,multi])和mongo shell的使用一模一样

(6)删除数据:

  • 删除所有符合条件的数据:delete_many() col.delete_many({'age':10})
  • 删除一条符合条件的数据:delete_one() col.delete_one({'height':{'$lte':160}})
  • 清空数据:delete_many({}) col.delete_many({})