Mongodb基本语法

Mongo 使用数据库

Mongod 开机

Mongoimport 导入数据

Nosql:非关系型数据库,mongodb是其中一个php

一、经过Mongo链接,默认链接的是test数据库(这个数据库不可删,是mongodb安装的时候自带的)
二、mongodb与其余数据库相比,关系型数据库必须建立表和字段,不然没法使用。可是mongodb属于“无状态模式”,结构不须要设计,直接使用便可,存什么东西取决于咱们本身向他传入什么!(当不存在则建立)
因为市场普标称之为表,因此mongodb作了兼容语法处理
显示全部数据库:show dbs / show databases(都是同样的)
显示全部集合/表:show collections / show tables(都是同样的)
显示当前使用数据库:db / db.getName();

数据库状态:db.stats()

资料:docs.mongodb.com/manual/refe…
"db" : "dnedu",:表示当前是针对“数据库”的描述
    "collections" : 3,:表示当前数据库有多少个collections,固然也能够经过show collections
    "objects" : 14,:表示当前数据库全部collection总共有多少行数据,可是只是一个估计值,并非很是的精准
    "avgObjSize" : 60.142857142857146,:每行数据的大小,也是估计值
    "dataSize" : 842, :当前数据库全部数据的总大小
    "storageSize" : 90112,表示当前数据库占有磁盘大小,单位bytes
    "numExtents" : 0,:包含全部集合中数据库中扩展数量的计数
    "indexes" : 3,
    "indexSize" : 90112,
"ok" : 1
复制代码

控制台运算

写入数据:

一:普通数据添加方式:

插入数据是我们熟悉的“json”格式,而在mongodb实际上使用的语法称之为”bson” BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON同样,支持内嵌的文档对象和数组对象,可是BSON有JSON没有的一些数据类型,如Date和BinData类型。算法

db.product.insert({name:"xiaomi6",price:1999,weight:140,number:40,area:{province:"beijing",city:"beijing"}})
db.product.insert({name:"huawei01",price:2999,weight:120,number:20,area:{province:"shenzhen"}})
复制代码

当集合(product)不存在则建立一个新的集合,插入的数据格式基本和json同样sql

二:多维数组对象添加:

db.product.insert({name:"xiaomi6",price:1999,weight:140,number:40,area:{province:"beijing",city:"beijing"}})
复制代码

三:数组信息的添加

db.product.insert({name:"xiaomi6",price:1999,weight:140,number:40,color:[‘red’,’black’,’yellow’]})
复制代码

咱们不可能一条一条的数据去插入,因此能够直接导入json文件批量插入文档 mongoimport --db dnedu --collection product --drop --file dr.json 注意--drop是先删除后导入,也能够不用--drop不删除直接导入mongodb

数据查询:

笼统查询:

查询全部数据:db.product.find()数据库

查询第一条数据:db.product.findOne();json

条件限制查询: db.product.find({name:"huawei01"})。相似于Mysql命令:select * from 表名 where name = “huawei01”

ID:id的字段内容值是mongodb自己算法得到的,该_id对应的值信息在“全球惟一”,至关于Mysql当中的主键id,是惟一的,该id能够自行设置,可是不推荐

范围查询
关键字:$gt   $lt   $gte   $lte
复制代码
Mongodb里面的字段单引号和双引号均可以,随意,只是在PHP因为会把$解释运行,因此php不行
查询price大于2500的数据 db.product.find({price:{'$gt':2500}})
复制代码

查询price小于2500的数据 db.product.find({price:{'$lt':2500}})
复制代码

设置多个查询条件:
查询price大于2500,weight小于100的数据
db.product.find({price:{'$gt':2500},weight:{'$lt':100}})
复制代码

查询price大于2500,weight等于20的数据
db.product.find({price:{'$gt':2500},weight:20})
复制代码

多维字段查询:
查询area里面的province等于changsha
db.product.find({'area.province':"changsha"})
复制代码

数组条件查询:
查询color带有red的数据(包含一个)
db.product.find({color:’red’});
复制代码

查询color带有red和black的数据(必须包含两个)
db.product.find({color:{‘$all’:[‘red’,’black’]}})
复制代码

$or,多个条件,知足其一便可
price等于3000或number小于100
db.product.find({'$or':[{price:3000},{number:{'$lt':100}}]})
复制代码

限制查询字段:
查询数据price等于3000,数据只显示name
db.product.find({price:3000},{name:1}),这条语句有id
db.product.find({price:3000},{name:1,_id:0}):这条语句真的就只有name字段了
复制代码

1.表示查询显示此字段 0.表示排除不显示此字段数组

若是你须要,好比name为1,price为0,那么会报错,由于mongodb的规则(能够都为1,页能够都为0)就是要输出就所有输出,要么不输出就所有不输出,_id除外,能够随意设置0,1,bash

db.product.find({price:3000},{name:1,price:0,_id:0})
复制代码

修改数据:
关键字:$set
修改name等于huawei06的字段,但只修改了一条
db.product.update({name:"huawei06"},{'$set':{name:"update before name"}});
复制代码

若是修改语句中,没有$set,会致使删除其余除id外的全部字段,而后保留咱们本身设置的字段,会有下面这张黑图的字段变为下面的图片所剩的字段ui

若是修改的字段没有则建立,若是执行如下命令
db.product.update({name:"huawei07"},{history:"i don't know"})
复制代码

上面这条语句会删除其余除id之外的全部字段,而后建立hisotry字段

删除数据:删除全部name等于huawei03的数据

db.product.remove({name:"huawei03"})spa

删除字段:db.product.update({name:"huawei04"},{'$unset':{name:1}});,只会删除一条

模糊匹配:

若是只须要一条数据,能够有两种方式:
Limit:获取多少条数据db.teacher.find({name:/哈/}).limit(1)
FindOne:只获取一条:db.teacher.findOne({name:/哈/})
复制代码
相关文章
相关标签/搜索