mongoDB的常用语法

安装

到mongodb官网下载安装包或者压缩包:https://www.mongodb.com/download-center?jmp=nav

1、如果是msi包的话则点击按步骤安装,如果是压缩包的话不用安装;

2、配置环境变量:将mongodb的bin目录配置到环境变量的path中,或者新建MONGODB_HOME再配置到path中;

3、新建文件夹作为存放mongo的数据的地方,然后在dos窗口中执行:mongod --dbpath=E:/mongodbIndex (path后面跟要存放数据的文件夹路径),执行完后发现文件夹下有了数据,此步骤同时表示启动了服务端

4、mongodb默认端口是27017,上面步骤mongod 命令是属于启动mongo服务端命令,启动后不能关闭,否则mongo就关闭了导致链接时出现10061错误,所以要新开启一个窗口执行:mongo localhost:27017,表示客户端连接

注:mongodb可以不设账号密码,通过IP地址和端口直接链接

退出输入:

exit

基本概念

在mongodb中基本的概念是文档、集合、数据库,下面介绍。

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

MongoDB的默认数据库为"db",该数据库存储在data目录中。

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

数据类型

MongoDB中常用的几种数据类型。

数据类型 描述
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Arrays 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。

mongodb语法

数据库

show dbs;//查看所有的数据库

db;//查看当前窗口所在的数据库

use 数据库名;//如果数据库不存在,则创建数据库,否则切换到指定数据库。

注:show dbs执行结果没有看到test库,但是db查看当前库确是test库,因为test库中刚开始没有任何数据并且是在内存中的,有了数据后就会显示出来了(其他新创建的数据库也是如此)

db.dropDatabase();//删除当前数据库,默认为 test,故要切换到某个数据库下进行删除

集合

显式创建集合:

db.createCollection("collectionName");//创建一个名为collectionName的集合,创建完成后会返回 {"ok",1} json串

隐式创建集合:

db.collection2.insert({name:"xiaomu",age:20});//往collection2集合中添加数据来创建集合,如果集合不存在就自动创建集合,返回:WriteResult({"nInserted":1})
show collections;//查看集合
db.collection1.count();//统计集合collection1中的数据数量
db.collection1.drop();//删除集合collection1

注:mongo中支持js,可通过js操作实现批零处理,如:for(var i=0;i<1000;i++){db.collection2.insert({name:"xiaomu"+i,age:20+i});}

固定集合

固定集合指的是事先创建而且大小固定的集合。

固定集合特性:固定集合很想环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制.

db.createCollection("collectionName",{capped:true,size:10000,max:100});//size指定集合大小,单位为KB,max指定文档数量

当文档数量上限时必须同时指定大小。淘汰机制只有在容量还没满时才会依据数量来工作。要是容量满了则会依据容量来工作。

查询

固定条件查询

注:mongodb中每条数据都有一个id,用来唯一标识一条数据,id由mongo本身来维护

db.collection1.find();//查询集合中所有的数据
db.collection1.find({age:7});//查询年龄为7的数据
db.collection1.find({age:7},{name:1});

//查询年龄为7的数据,只返回name字段数据;两个大括号,前面的存查询条件,后面的存返回条件,返回条件字段1表示true,表示此字段返回,如果name后面的1改为0则表示不返回name字段,返回除name字段以外的其他字段

注意:如果设置返回字段有为0的已经表示查询所有除了某字段以外的所有字段就不能再设置某个字段为1了,有语法冲突

db.collection1.find({age:7,name:"xiaomu"},{name:1,age:1});//查询age为7,name为xiaomu的数据,返回name和age字段

注:多条件查询此处是并列,但是如果多个条件都相同的话如{name:"xiaoli",name:"xioamu"}则会只查询后一个条件的数据

db.collection1.find({},{age:1});//查询所有的数据,返回age字段
db.collection1.findOne();//查询集合的第一条数据

筛选查询

gt(greater than)大于;

lt(less than)小于;

gte(greater then equal)大于等于;

lte(less than equal)小于等于;

ne(not equal)不等于

db.collection1.find({age:{$gt:10}});//查询age大于10的数据

包含

db.collection1.find({price:{$all:[1,2]}});//(包含。。并且包含。。)此处price是个数组,此方法查询所有price包含1和2的数据
db.collection1.find({price:{$in:[1,2]}});//(包含。。或者包含。。)查询price中含有1或者2的数据
db.collection1.find({price:{$nin:[1,2]}});//(不包含。。并且不包含。。)查询price中不含有1并且不含有2的数据
db.collection1.find({$or:[{name:"xiaomu"},{price:{$in:[3]}}]});//(。。或者。。)查询name为xiaomu或者价格包含3的数据
db.collection1.find({$nor:[{name:"xiaomu"},{name:"xiaoli"}]});//(既不也不)查询name不为xiaomu或者name不为xiaoli的数据

分页

db.collection1.find().skip(0).limit(10);//查询从0条开始,查询10条,skip()方法默认参数为 0 ,表示跳过的条数

排序

db.collection1.find().sort({age:1});//按照年龄升序排序,为-1的话表示降序排序

存在

db.c2.find({hight:{$exists:1}});//查询存在hight字段的数据

删除

db.collection1.remove({age:7,name:"xiaomu"});//删除age为7,name为xiaomu的数据

更新

db.c3.update({age:12},{name:"xiaoxiao"});//本意为将age为12的数据中的name更新为xiaoxiao,但是实际效果是只是将age为12的满足条件数据的第一条整条数据覆盖为name:“xiaoxiao”
db.c3.update({age:15},{$set:{name:"xiaolili"}});//本意为将age为15的数据的name修改为xiaolili,但是实际效果是只修改了查询到的第一条数据
db.c3.update({age:15},{$set:{name:"xiaolili"}},1,1);//将age为15的数据的name修改为xiaolili

总共4个参数,第四个参数表示有多条数据符合筛选条件的话是否全部更改,默认为0只改第一条,改为1后表示全部更改

第3个参数1表示如果没有符合条件的记录是否新增一条记录,1表示新增,0表示不新增

如:

db.c3.update({age:21},{$set:{name:"xiaolili"}},1,1);//如果不存在age为21的数据则增加一条,增加的数据为{age:12,name:”xiaolili”}
db.c3.update({age:12},{name:"xiaoxiao"},{$inc:{age:-2}},1,1);//$inc表示使某个键值加减指定的数值,此处表示将name为xiaoxiao的数据的age字段的值减2
db.c3.update({age:12},{name:"xiaoxiao"},{$inc:{age:1}},0,1);//$unset用来删除某个键,此处表示删除name为xiaoxiao的数据的age字段

索引

mongo默认为每条数据的_id字段建索引

db.c3.ensureIndex({age:1});//为age字段建普通索引
db.c3.dropIndex({age:1});//删除age字段的索引
db.c3.ensureIndex({age:1},{unique:true});//为age字段建唯一索引,在为字段建了唯一索引后就不能再添加相同值的记录了

数据备份与恢复

备份

mongodump -h dbhost -d dbname -o dbdirectory

-h:mongodb所在服务器地址,如127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d:需要备份的数据库实例,如:test

-o:需要备份的数据存放的位置,例如:d:\data (如果没有则自动创建)

恢复

mongorestore -h dbhost -d dbname -directoryperdb dbdirectory

-h:mongodb所在服务器地址,如127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d:需要备份的数据库实例,如:test,此名称也可以和备份的时候不一样

-directoryperdb :备份数据所在的位置,例如:d:\data

注意:恢复时要在退出mongo命令行状态下执行

导入与导出

导出

mongoexport -h dbhost -d dbname -c collectionName -o output

-h:数据库地址

-d:指明使用的库

-c:指明要导出的集合

-o:指明要导出的文件路径加文件名,文件名可以是txt、word、excel等多种文件格式

导入

mongoimport -h dbhost -d dbname -c collectionname 文件的地址路径

-h:数据库地址

-d:指明使用的库

-c:指明要导出的集合

注意:导入时要在退出mongo命令行状态下执行,导入导出与数据备份和恢复相似

原文地址:https://www.cnblogs.com/diandianquanquan/p/12238632.html

时间: 2024-08-28 05:46:46

mongoDB的常用语法的相关文章

MongoDB常用语法

1 MongoVUE用法 1.1 模糊查询 头匹配: {"title":new RegExp("^各地发起纪念周总理")} 任意位置匹配: {"published":{$gte: "2013-05-01", $lt: "2013-06-10"}, "title":new RegExp(".*北京.*")} 1.2 时间段查询 {"published"

MongoDB Shell 常用操作

数组查询 数组查询 MongoDB 中有子文档的概念,一个文档中能方便的嵌入子文档,这与关系性数据库有着明显的不同,在查询时,语法有一些注意点. 例子代码,假如我们的一个集合(tests)中存在标签键,有如下模式: tags: [ObjectId] 查询含有某个标签 ID 的文档 db.tests.find({tags: tagId}); 我现在有一组标签 tagIds,即是数组,需要查询含有该数组中任一元素的文档,此时需要用到 $in 操作符 db.tests.find({tags: {$in

MongoDB中常用的find

接着前一篇文章,下面主要介绍一下MongoDB中常用的find操作. 先打开MongoDB shell,通过下面一组命令插入一些数据. 1 post1 = {"title":"learn MongoDB", "author":"Wilber", "date":new Date(), "score":90} 2 post2 = {"title":"learn

SQL常用语法大全

一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:创建新表create

Emmet常用语法

Emmet常用语法1.输入!和html:5(不能大写),按下TAB 键,快速生成一个 HTML5 的标准文档初始结构. html:xt 生成 HTML4 过渡型 html:4s 生成 HTML4 严格型2.生成带有 id .class 的 HTML 标签 (1)Emmet 的语法有点类似 CSS 的语法,生成 id 为 aaa 的 div 标签,我们只需要编写下面指令:#aaaEmmet 默认的标签为 div ,如果我们不给出标签名称的话,默认就生成 div 标签. (2)如果编写一个 clas

php正则表达式入门-常用语法格式

原文地址:http://www.jbxue.com/article/24467.html 分享下php正则表达式中的一些常用语法格式,用于匹配字母.数字等,个人感觉还不错. 语法格式:位于定界符"/"之间.较为常用的元字符包括: “+”, “*”,以及 “?”.其中, “+”元字符规定其前导字符必须在目标对象中连续出现一次或多次, “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次, 而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次. /jim{2,6}/<

SQLServer2005 常用语法大全

SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建备份数据的 device U

ABAP 指針常用语法

1 .定义指針 :指針的定義主 要有以下語句 定義任意類型的指針,但是不具備欄位結構(僅僅是一個地址) FIELD-SYMBOLS <carrid> TYPE ANY. 參考數據庫表定義(這種指針是含有欄位結構的,參考內表同理) FIELD-SYMBOLS <sflight> TYPE sflight. FIELD-SYMBOLS <sflight> LIKE sflight. FIELD-SYMBOLS <sflight> LIKE LINE OF sfl

Oracle常用语法

1,case用法 SELECT CASE WHEN T.FLAG='0' THEN T.USERID WHEN T.FLAG='1' THEN T.ORGID ELSE NULL END AS '标识' FROM XTXMXX T 2,decode用法 --如果FLAG等于1,则转为USERID,如果为0,则转为ORGID,其他的为2 SELECT DECODE(T.FLAG,1,T.USERID,0,T.ORGID,2) FROM XTXMXX T ; 3,创建sequence -- Crea