怎么判断网站被k,网络营销方式有哪些 各有什么特点,wordpress评论框第三方,优秀网格员事迹材料这里写自定义目录标题 MongoDB基本介绍MongoDB基本操作数据库相关集合相关增删改查 MongoDB基本介绍
简单介绍 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产… 这里写自定义目录标题 MongoDB基本介绍MongoDB基本操作数据库相关集合相关增删改查 MongoDB基本介绍
简单介绍 MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品是非关系数据库当中功能最丰富最像关系数据库的。 它支持的数据结构非常松散是类似json的bson格式因此可以存储比较复杂的数据类型。 Mongo最大的特点是它支持的查询语言非常强大其语法有点类似于面向对象的查询语言几乎可以实现类似关系数据库单表查询的绝大部分功能而且还支持对数据建立索引。业务应用场景 MongoDB可应对“三高“需求 High performance对数据库高并发读写的需求 Huge Storage对海量数据的高效率存储和访问的需求 High Scalability High Availability对数据库的高可扩展性和高可用性的需求什么时候选择MongoDB 应用不需要事务及复杂join支持 新应用需求会变数据模型无法确定想快速迭代开发 应用需要2000-3000以上的读写QPS更高也可以 应用需要TB甚至PB级别数据存储 应用要求存储的数据不丢失 应用需要99.999%高可用 应用需要大量的地理位置查询、文本查体系机构 数据类型 MongoDB的最小存储单位就是文档document对象。文档document对象对应于关系型数据库的行。数据在MongoDB中以BSONBinary-JSON文档的格式存储在磁盘上。
BSONBinary Serialized Document Format是一种类json的一种二进制形式的存储格式简称 Binary JSONBSON和JSON一样支持内嵌的文档对象和数组对象但是BSON有JSON没有的一些数据类型如Date和Bin Data类型。 BSON中除了基本JSON类型 stringintegerbooleandoublenullarray和objectmongo还使用了特殊的数据类型。这些类型包括 date object id binary data regular expression和code。每一个驱动都以特定语言的方式实现了这些类型查看你的驱动的文档来获取详细信息
MongoDB基本操作
数据库相关
1、查看数据库
show databases;2、创建或切换数据库
use 数据库名选择数据库(如果数据库不存在,不会报错;会隐式创建:当后期该数据库有数据时自动创建)
3、删除数据库(先选中数据库)
db.dropDatabase()集合相关
1、查看所有集合
show collections2、创建集合(插入数据会隐式创建)
db.createCollection(集合名)3、删除集合
db.集合名.drop()增删改查
增
db.集合名.insert(JSON数据)use test2 db.c1.insert({uname:webopenfather,age:18}) ----在test2数据库的c1集合中插入数据姓名叫webopenfather年龄18岁mongodb会给每条数据增加一个全球唯一的_id键 一次性插入多条数据
db.c1.insert([ {uname:z3, age:3}, {uname:z4, age:4}, {uname:w5, age:5} ])快速插入10条数据 由于mongodb底层使用JS引擎实现的所以支持部分js语法。因此可以写for循环
for (var i1; i10; i) { db.c2.insert({uanme: ai, age: i}) }删除文档
db.集合名.remove(条件[,是否删除一条]) ---默认是false是否删除一条 true是删除的数据为第一条
db.c3.remove({uname:zs3},true) ---删除uname:zs3的第一条
db.c3.remove({uname:zs3}) --删除uname:zs3的所有修改文档
db.集合名.update(条件,新数据[是否新增,是否修改多条,])新数据是否需要使用修改器如果不使用那么会将新数据替换原来的数据。
1db.集合名.update(条件,{修改器:{键:值}}[是否新增,是否修改多条,])修改器 作用 $inc 递增 $rename 重命名列 $set 修改列值 $unset 删除列
是否新增 指条件匹配不到数据则插入(true是插入false否不插入默认)
是否修改多条 指将匹配成功的数据都修改true是false否默认
db.c3.update({uname:zs1},{$set:{uname:zs2}}) ----查找不到不做修改
db.c3.update({uname:zs1},{$set:{uname:zs2}},true) ----查找不到则插入db.c3.update({uname:zs10},{$inc:{age:2}}) ---给{uname:zs10}的年龄加2岁----修改gcc的username为barethage11sex字段重命名为sexuality删除address字段
db.people.update({username:gcc},{$set:{username:bareth},$inc:{age:11},$rename:{sex:sexuality},$unset:{address:true}
})
查询文档
db.集合名.find(条件[,查询的列])其他语法
db.集合名.find({键:{运算符值}}) ----查询所有数据
db.c1.find()
---只看uname列
db.c1.find({},{uname:1})
---除了uname列都看
db.c1.find({},{uname:0})
-----查询age大于5的数据
db.c1.find({age:{$gt:5}})
----查询年龄是5岁、8岁、10岁的数据
db.c2.find({age:{$in:[5,8,10]}})
----查询年龄不是null的数据
db.c2.find({ age: { $ne: null } })
----查询年龄一定存在且不是null的数据
db.c2.find({ age: { $exists: true, $ne: null } })1:主键为32的商品
db.goods.find({goods_id:32});2:不属第3栏目的所有商品($ne)
db.goods.find({cat_id:{$ne:3}},{goods_id:1,cat_id:1,goods_name:1});3:本店价格高于3000元的商品{$gt}
db.goods.find({shop_price:{$gt:3000}},{goods_name:1,shop_price:1});4:本店价格低于或等于100元的商品($lte)
db.goods.find({shop_price:{$lte:100}},{goods_name:1,shop_price:1});5:取出第4栏目或第11栏目的商品($in)
db.goods.find({cat_id:{$in:[4,11]}},{goods_name:1,shop_price:1});6:取出100价格500的商品($and)
db.goods.find({$and:[{price:{$gt:100},{$price:{$lt:500}}}]);7:取出不属于第3栏目且不属于第11栏目的商品($and $nin和$nor分别实现)
db.goods.find({$and:[{cat_id:{$ne:3}},{cat_id:{$ne:11}}]},{goods_name:1,cat_id:1})
db.goods.find({cat_id:{$nin:[3,11]}},{goods_name:1,cat_id:1});
db.goods.find({$nor:[{cat_id:3},{cat_id:11}]},{goods_name:1,cat_id:1});8:取出价格大于100且小于300,或者大于4000且小于5000的商品()
db.goods.find({$or:[{$and:[{shop_price:{$gt:100}},{shop_price:{$lt:300}}]},{$and:[{shop_price:{$gt:4000}},{shop_price:{$lt:5000}}]}]},{goods_name:1,shop_price:1});9:取出goods_id%5 1, 即,1,6,11,..这样的商品
db.goods.find({goods_id:{$mod:[5,1]}});10:取出有age属性的文档
db.stu.find({age:{$exists:1}});
# 含有age属性的文档将会被查出