MongoDB
linux下mongod开启服务,mongo进入命令页面
简介
为了快速开发互联web应用而设计的数据库系统。设计目标是极简、灵活、作为web应用栈的一部分。数据模型是面向文档的,所谓文档是一种类似于json的结构,简单理解mongodb这个数据库中存的是各种各样的json(bson)。
数据库(database):一个仓库,在仓库中可以存放集合。
集合(collection):类似数组,在集合中存放文档。
文档(document):文档数据库中的最小单位,我们存储和操作的内容都是文档。
命令
Show database; 查看数据库
Use 数据库名;选择数据库 选择不存在的数据库会直接创建
安装
需在根目录创建data/db 目录才可以通过mongod命令运行mongodb服务。
指定数据位置:mongod –dbpath D:\mongoDB\data\db 必须是data\db目录
指定端口 mongod –port 123 以123端口访问
通过 mongo 进入mongodb命令式界面
sc.exe create MongoDB binPath= “\”D:\mongoDB\mongoDB\bin\mongod.exe” --service --config=\”D:\mongoDB\mongoDB\mongod.cfg “” DisplayName= “MongoDB” start= “auto”
mongod --dbpath =D:\MongoDB\data --logpath=D:\MongoDB\log\MongoDB.log --install --serviceName “MongoDB”
数据库放集合 集合放文档。
图形界面 mongodbmanagerfree
F6 执行当前光标所在行的代码
Mongodb插入是,当没有指定_id的值时,mongodb会自动为文档添加_id,作为文档唯一标识。
命令
Show dbs 、show databases; 显示所有数据库
Usr 数据库名; 进入数据库 mongodb 数据库和集合不需要手动创建,当创建文档时,如果文档所在数据库或集合不存在会自动创建数据库和集合。只有创建文档时才会创建数据库或集合,进入能显示进入,但不会创建。
Db; 显示当前数据库
show collections :显示当前数据库中所有集合
objected(); 生成一个_id 标识
db.stats(); 查看当前数据库状态。
Db.collection.stats() 查看当前集合状态
输入不带括号的方法,可查看源码。
Db.collection.save 查看save源码
Show tables() 查询集合
CRUD
插入
Db..insert(doc) 插入文档 collection为集合名 例:db.stus.insert({name:”qiu”,age:”12”,sex:”man”}); 往当前数据库的stus集合插入。Db代表当前数据库。
Db..insert([{xxx},{xxx}]) 一次插入多个数据 插入数组,用,隔开
可在文档中添加_id 自定义文档标识。
db.collection.save({xx:xxx}); 添加
查找
Db..find() 查询当前集合中的所有文档
Db..find({“键.对象名”:”值”}); 查找键、对象名、值匹配的文档
Db..find({键:值}) 查找匹配的文档
查找大集合时,mongodb默认显示20条记录,输入it查看下一个20条
db.nums.find({num:{“KaTeX parse error: Expected 'EOF', got '}' at position 10: gt":19995}̲}); 查找大于19995的…gt”:10000,"KaTeX parse error: Expected 'EOF', got '}' at position 10: lt":10010}̲}); 查找10000到10…cmd.find()
Db.collection.find().limit(n) 查询n条
Db.collection.find().find(n).skip(m) 跳过m条查询n条
Db.collection.find().sort({xx:n}) 根据某个键值排序,1为升序,2或-1为降序 db.collection.find({}).sort({_id:1}) 按升序排序
Db.collection.find({},{xx:1,xx:0}) 查询所有,只显示一个字段_id默认显示,如不显示_id,可加上{_id:0},需要显示{xx:1}
修改
Db.collection.update({键:值(被修改的)},{KaTeX parse error: Expected 'EOF', got '}' at position 10: set:{键:值}}̲); 修改 如果语句中的键值…unset:{键:值}}); 去掉匹配文档中的对象键值
Update默认使用新对象替换就对象,不使用KaTeX parse error: Expected '}', got 'EOF' at end of input: …e({name:"aa"},{set:{aihao:{movie:[“111”,“222”]}}})改成
{ “_id” : ObjectId(“5eea7fa643a26dd7c15bb2cd”), “name” : “aa”, “aihao” : { “movie” : [ “111”, “222” ] } }
db.jayus.update({name:"aa"},{$push:{"aihao.movie":"333"}}); 往对象数组添加一个值,只能添加一个
db.jayus.update({name:"aa"},{$addToSet:{"aihao.movie":"333"}}); 往对象数组添加一个值,只能添加一个添加的值写成数组就往值里面添加数组。
Push和addtoset的区别:后者保证唯一性
db.jayus.update({name:"aa"},{$addToSet:{"aihao.movie":"123"}},false,true); 当有多个文档符合修改条件时,mongodb默认修改查到的第一条,此语句到的true为多项更新。
删除
Db.collection.remove({xxx:xxx}) 删除匹配键值
Db.collection.remove({}); 清空集合,但性能差。推荐直接db.collection.drop()删除集合。
Db.aaa.drop(); 删除集合
Db.dropdatabase(); 删除数据库
Remove()默认删除一个,传入true,可删除多个
索引
查找语句后.explain,可查看语句运行过程。
Db.collection.ensureIndex({xx:xxx}) 建立索引
db.collectino.ensureindex({键值},{unique:true}); 创建唯一性索引