是一个非关系型数据库 存储形式为键值对 水平扩展很容易 常做为缓存数据库来使用python
Mongodb的存储文档称之为 BSON 相似json对象 字段值能够包含其余的文档 、数组 以及文档数组mysql
sql概念 | mongodb的概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 表/集合 |
row | document | 行/文档 |
column | field | 列/域 |
table join | 表关联 | |
primary key | primary key | 主键手动添加/自动建立 |
mongod.exe --dbpath=D:\db
cd mongodb的bin目录sql
mongo.exemongodb
mongod.exe --bind_ip 0.0.0.0数据库
mongo ip:port/database -u username -p password
mongo database --host x.x.x.x --port 31935 -u username -p passwordjson
show dbs数组
use 数据库名缓存
db.getName()code
db.createCollection('user')对象
db.goods.insert({"goodsname":"牛奶"})
show collections
db.collection_name.drop()
若是遇到命名奇怪的集合,如数字名字的集合没法删除,可使用以下
db.getCollection('123').drop()
注意:
mongodb区分大小写
db.old_name.renameCollection("new_name")
db.集合名.insert({文档})
db.user.insert({'name':"张三",'age':18})
列表中存放多条文档
db.user.insert([{'name':'李四','age':20},{'name':'王五','age':25}])
db.collection.insertOne()
db.user.insertOne({"name":"赵六","age":30})
db.collection.insertMany()
db.user.insertMany([{"name":"赵六","age":30},{"name":'王五',"age":22}])
插入多条文档 无论是insert仍是insertMany 都须要使用列表
insertMany 若是不适用列表 则报错
insert 插入多条不适用列表 则插入成功数据为第一条文档
主体结构
db.collection.update(
<query>, 查询的条件
<update>, 要更改的东西
{
<upsert> bool值 若是修改的数据查询不到 当前数据是否做为新数据插入 默认Flase 不插入
<multi> bool 值 若是匹配到多条 默认是更改一条 Flase 改成True则所有更改
}
)
$set 直接修改
$inc 累加修改
实例
db.user.update({"name":"张三"},{"age":38})
db.user.update({"name":"李四"},{$set:{"age":30}})
db.user.update({"name":"李四"},{$inc:{"age":30}})
upsert参数的使用
db.user.update({"name":"张三"},{$set:{"age":30}},true)
{ "_id" : ObjectId("5b0f68068829170dea936f21"), "name" : "张三", "age" : 30 }
db.user.update({"name":"赵六"},{$set:{age:10}},{multi:true})
db.user.update({"name":"赵六"},{$set:{age:18}},true,true)
db.collection.updateOne()
实例
db.user.updateOne({"age":18},{$set:{age:10}})
db.collection.updateMany()
实例
db.user.updateMany({"name":'赵六'},{$set:{age:12}})
主体结构
db.collection.remove( <query>, 条件 justOne, bool值 默认flase 所有删除 )
实例
db.user.remove({"name":"赵六"}) WriteResult({ "nRemoved" : 2 })
db.user.remove({"name":"王五"},true) db.user.remove({"name":"王五"},1)
db.user.remove({})
db.collection.deleteOne()
db.user.deleteOne({'name':"李四"}) { "acknowledged" : true, "deletedCount" : 1 }
db.collection.deleteMany()
db.user.deleteMany({'name':"李四"}) { "acknowledged" : true, "deletedCount" : 2 }
db.collection.find()
指定显示某些字段 字段名:true
db.user.find({},{name:true}) 只显示name和id db.user.find({},{name:true,age:true}) 显示name和age和id字段
指定除了某个字段之外的字段都显示
db.user.find({},{name:false,age:false})
注意:
本身定义的域 只能设置显示 或者不显示 不能一块儿设置
可是系统的id能够 由于无论你给其余域设置true或者false都会显示
只有这种能够
db.user.find({},{"_id":false,age:true})
db.user.findOne({"age":28})
db.user.find().count() db.user.find({age:18}).count()
db.user.find().pretty()
$gt 大于 db.user.find({age:{$gt:18}}) $gte 大于等于 db.user.find({age:{$gte:18}}) $lt 小于 db.user.find({age:{$lt:28}}) $lte 小于等于 db.user.find({age:{$lte:28}}) {key:val} 等于 db.user.find({age:28}) $ne 不等于 db.user.find({age:{$ne:28}}) /数据/ 模糊查询 db.user.find({name:/张/}) /^数据/ 以...做为开头 db.user.find({name:/^张/}) /数据$/ 以...做为结尾 db.user.find({name:/张$/}) $in 在...范围内 db.user.find({'age':{$in:[18,20]}}) $nin 不在...范围内 db.user.find({'age':{$nin:[18,20]}}) 按照id来查询 db.user.find({"_id" : ObjectId("5b0fabcda14d4a753f75edc5")})
db.user.find({"name":"张三","age":28}) db.user.find({"age":{$gt:18,$lt:28}}) #名字包含李的,而且年龄大于18而且小于28 只显示name字段 db.user.find({"name":/李/,"age":{$gt:18,$lt:28}},{"_id":false,'name':true})
db.collection.find({$or:[条件1,条件2...]})
查询年龄大于18 或者 小于28
db.user.find({$or:[{age:{$gt:18}},{age:{$lt:28}}]}) db.user.find({$or:[{name:/张/},{name:/三/}]})
db.user.find({名:值...,$or:[{条件1},{条件2}...]}) select * from user where name like '%三%' and (age=18 or age=28)
db.collection.find().limit(num)
db.user.find().limit(2)
注意:
从头取出 num条
db.collection.find().skip(num)
db.user.find().skip(2)
db.collection.find().skip(num).limit(num)
db.user.find().skip(2).limit(2)
db.collection.find().sort({key:1|-1}) #升序或者降序
db.user.find().sort({age:-1}).limit(1)
删除以前最好use一下
db.dropDatabase()