Монго использует базу данных
ботинок монгода
Данные импорта Mongoimport
Nosql: нереляционная база данных, mongodb — одна из них.
1. Подключиться через Mongo, подключение по умолчанию — тестовая БД (эту БД нельзя удалить, она предоставляется при установке mongodb)
2. По сравнению с другими базами данных реляционные базы данных должны создавать таблицы и поля, иначе их нельзя будет использовать. Но mongodb относится к «режиму без сохранения состояния», структуру не нужно проектировать, ее можно использовать напрямую, а что хранить, зависит от того, что мы ему передаем! (создать, если его нет)
Поскольку рыночный стандарт называет это таблицей, mongodb выполнил совместимую обработку синтаксиса.
Показать все базы данных: показать dbs/показать базы данных (все одинаково)
Показать все коллекции/таблицы: показать коллекции/показать таблицы (все одинаково)
Показать текущую используемую базу данных: db/db.getName();
Статус базы данных: db.stats()
материал:docs.MongoDB.com/manual/ref E…
"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一样
Два: добавление объекта многомерного массива:
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不删除直接导入
запрос данных:
Общий запрос:
查询所有数据:db.product.find()
查询第一条数据:db.product.findOne();
条件限制查询: db.product.find({name:"huawei01"})。类似于Mysql命令:select * from 表名 where name = “huawei01”
ID:id的字段内容值是mongodb本身算法获得的,该_id对应的值信息在“全球唯一”,相当于Mysql当中的主键id,是唯一的,该id可以自行设置,但是不推荐
запрос диапазона
关键字:$gt $lt $gte $lte
Поля в Mongodb могут быть как в одинарных, так и в двойных кавычках, вы свободны, но 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’]}})
$или, несколько условий, одно из них может быть выполнено
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,
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外的所有字段,然后保留我们自己设置的字段,会有下面这张黑图的字段变为下面的图片所剩的字段
如果修改的字段没有则创建,如果执行以下命令
db.product.update({name:"huawei07"},{history:"i don't know"})
上面这条语句会删除其他除id以外的所有字段,然后创建hisotry字段
Удалить данные: удалить все данные, имя которых равно huawei03
db.product.remove({name:"huawei03"})
删除字段:db.product.update({name:"huawei04"},{'$unset':{name:1}});,只会删除一条
Нечеткое совпадение:
如果只需要一条数据,可以有两种方式:
Limit:获取多少条数据db.teacher.find({name:/哈/}).limit(1)
FindOne:只获取一条:db.teacher.findOne({name:/哈/})