mongdb语法
“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。
每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。每个集合被创建时含有唯一标识名。
集合概念类似与sql中的表(table),但是不需要定义任何模式(schema)。
不适用的场景如下:
1)要求高度事务性的系统。
2)传统的商业智能应用。
3)复杂的跨文档(表)级联查询。
一、进入退出mongo
mongo
进入
exit
退出
显示所有库: show dbs
二、库操作
* 显示所有库: show dbs
* 切换数据库: use 数据库名称
* 查看所在库: db
* 删除库:db.dropDatabase()
三、集合操作
查看当前数据库的集合: show collections
集合创建:
db.createCollection(name,options)
删除集合:db.集合名称.drop()
四、数据操作的增删改查
1. 插入数据
db.集合名称.insert(document)
每一条数据,就是一个document,即一条json
插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId
与sql 的对比,sql中的表==集合,元组==文件
例: db.student.insert({name:‘lucky',age:18})
插入多条
db.student.insert([
{name:'jianeng',sex:'male',age:18},
{name:'张三',sex:’female',age:30 },
{name:'李四',sex:’male',age:48 },
])
2. 删除数据
删除满足条件的,所有数据:
db.student.remove({sex:'女'})
只是删除 一条
db.student.remove({sex:'女'},{justOne:true })
3. 更新数据
db.集合名称.update(
<query>, (条件)
<update>,
{multi: <boolean>}
)
全文档更新: db.stu.update({name:’haha’},{xx:’yy’ } )
指定属性更新,通过操作符$set
db.student.update({name:'jianeng'},{$set{name:'xxx',age:666 }})
更新多条(字段更新): { multi: ture }
db.student.update( {sex:’feamle'},{$set:{sex:'女'}},{ multi:true} )
4. 查询数据
db.集合名称.find(query, projection)
例:db.student.find( )
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。
查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
若不指定 projection,则默认返回所有键,指定 projection 格式如下,有两种模式
db.collection.find(query, {title: 1, by: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {title: 0, by: 0}) // exclusion模式 指定不返回的键,返回其他键
_id 键默认返回,需要主动指定 _id:0 才会隐藏
两种模式不可混用(因为这样的话无法推断其他键是否应返回)
db.collection.find(query, {title: 1, by: 0}) // 错误
只能全1或全0,除了在inclusion模式时可以指定_id为0
db.collection.find(query, {_id:0, title: 1, by: 1}) // 正确
五、使用python操作MongoDB
(一)连接器
安装python包:pip install pymongo
引入包pymongo:import pymongo
建立连接并创建客户端:
client= pymongo.MongoClient(‘127.0.0.1’, 27017)
指定数据库:db=client[ 数据库名 ]
指定集合:stu=db [ 集合名]
(二)主要方法
- insert_one
- insert_many
- update_one
- update_many
- delete_one
- delete_many
- find_one
- find