MongoDB语法不完全手册

入门语法

包括安装,增删改查,基本语法,备份与恢复

安装

1.官网下载压缩包,解压至预定文件路径;或者msi文件自行安装即可。
2.配置环境变量:将mongodb的bin目录配置到环境变量的path中,或者新建MONGODB_HOME再配置到path中。(非必需)
3.新建文件夹(如:c:\data\db)作为存放mongo的数据存放位置,然后在CMD窗口中执行:mongod --dbpath=c:\data\db(启动服务端,并指定数据存放位置)。执行完后发现文件夹下有了数据,此步骤同时表示启动了服务端。
4.如未执行第二步,则需要在mongdb安装目录的bin目录下,启动CMD,再执行步骤3
5.mongodb默认端口是27017,以上Mongod命令启动后窗口不能关闭,否则会导致链接时出现10061错误,所以要新开启一个窗口执行:mongo localhost:27017,表示客户端连接

注:mongodb可以不设账号密码,通过IP地址和端口直接链接。退出输入:exit

mongodb概念与MySQL对比

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

mongodb常见数据类型

数据类型描述
String字符串,务必使用utf-8编码
Integer整型,存储数值
Boolean布尔值
Double双精度浮点值。用于存储浮点值
Null用于创建空值
Arrays用于将数组或列表或多个值存储为一个键

操作数据库语法

db.createUser创建用户
show dbs:查看当前用户权限下所有的数据库
db:查看当前窗口所在的数据库
use db_name:切换到指定数据库。如果数据库不存在,则自动创建数据库
db.dropDatabase():删除当前数据库
db.createCollection("collectionName"):创建一个名为collectionName的集合,创建完成后会返回 {“ok”,1} json串
show collections:查看集合
db.collection1.count():统计集合collection1中的数据数量
db.collection1.drop():删除集合collection1

数据库内容添加(插入操作)

db.COLLECTION1.insert(document):向collection1中插入数据,数据形式类似json格式,由键值对构成。
例:db.collection1.insert({name:'sss',age:'15'})向collection1中插入一条数据
3.2 版本后还有以下几种语法可用于插入文档:
db.collection.insertOne():向指定集合中插入一条文档数据
db.collection.insertMany():向指定集合中插入多条文档数据

数据库内容修改(更新操作)

update()语句

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如$set,$inc…)等,也可以理解为sql update查询内set后面的
    • $set:用法:{$set:{field:value}}——作用:把文档中某个字段field的值设为value。
    • $inc:用法:{$inc:{field:value}}——作用:将数字字段field增加value
    • $unset:用法:{$unset:{field:1}}——作用:删除某个字段field,1代表状态true
    • $push:用法:{$push:{field:value}}——作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入该updata数据,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,则更新所有纪录。
    例:
    db.collections.update({'age':16},{$set:{'age':18}},{multi: true}):将所有age为16的数据,改为18。

save()语句

db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
通过给定的_id值,添加或替换数据。

数据库内容删除(删除操作)

删除所有文档

db.collection_name.deleteMany()删除自动集合内所有数据

删除满足条件的所有文档

db.users.deleteMany(<query>)

仅删除第一个满足条件的文档

db.users.deleteOne(<query>)

remove() 方法(旧版本)

db.collection.remove(
    <query>,
    {
        justOne: <boolean>
    }
)

参数说明:

  • query:必选项,是设置删除的文档的条件。
  • justOne:可选项,默认为false,删除符合条件的所有文档,如果设为 true,则只删除一个文档。

数据库内容查询(查询操作)

db.collection.find(query, projection).pretty()查询满足条件的第一条数据
db.collection1.findOne():查询满足条件的第一条数据

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)
  • pretty提高可读性
    例:db.collection1.find({age:7,name:"xiaomu"},{name:1,age:1}):查询age为7,name为xiaomu的数据,返回name和age字段;如果name后面的1改为0则表示不返回name字段,返回除name字段以外的其他字段,此时不能再设置其他字段为1。

条件运算符

操作格式范例RDBMS中的类似语句
等于{<key>:<value>}db.col.find({“by”:“value”}).pretty()where by = ‘value’
小于{<key>:{$lt:<value>}}db.col.find({“likes”:{$lt:50}}).pretty()where likes < 50
小于或等于{<key>:{$lte:<value>}}db.col.find({“likes”:{$lte:50}}).pretty()where likes <= 50
大于{<key>:{$gt:<value>}}db.col.find({“likes”:{$gt:50}}).pretty()where likes > 50
大于或等于{<key>:{$gte:<value>}}db.col.find({“likes”:{$gte:50}}).pretty()where likes >= 50
不等于{<key>:{$ne:<value>}}db.col.find({“likes”:{$ne:50}}).pretty()where likes != 50

AND与OR与in

and条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
db.col.find({key1:value1, key2:value2}).pretty()

or条件

or单纯换为and即代表and条件

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

注意or后语句使用[...]包裹

in条件

满足其中一个元素的数据。
例:
db.user.find({age: { $in:[13,73]}})查找age为13或73的数据。

Limit方法与Skip方法与sort方法

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER).sort({key:1})
limit与skip位置无前后之分。
limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
skip()方法接受一个数字参数,作为跳过的记录条数。
sort()对指定的参数进行排列,其中 1 为升序排列,而 -1 是用于降序排列。

skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。

聚合相关操作

aggregate()方法

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
例:
db.collection_name.aggregate([$group:{_id:'$user',num_tutorial:{$sum:1}]) 根据user分组,并计数。

_id是固定用法,不能改名。$group函数需要被[]包裹

聚合函数

表达式描述
$sum计算总和。
$avg计算平均值
$min获取集合中所有文档对应值得最小值。
$max获取集合中所有文档对应值得最大值。
$push在结果文档中插入设定值到一个数组中。
$addToSet在结果文档中插入设定值到一个数组中,但不创建副本。
$first根据分组内容的排序获取第一个文档数据。
$last根据分组内容的排序获取最后一个文档数据

管道功能

将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
常用函数:

  • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  • $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
  • $limit:用来限制MongoDB聚合管道返回的文档数。
  • $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  • $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。

MongoDB 正则表达式

MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。
正则表达式中使用变量,要使用eval将组合的字符串进行转换。如:name:eval("/"+age+"/i")
语法形式:

regex操作符:
{<field>:{$regex:/pattern/,$options:<options>}}
{<field>:{$regex:’pattern’,$options:<options>}}
{<field>:{$regex:/pattern/<options>}}
正则表达式对象:
{<field>: /pattern/<options>}

regex与正则表达式对象的区别:

  • KaTeX parse error: Expected '}', got 'EOF' at end of input: …式对象,例如:`{name:{in:[/joe/i,/jack/}}`
  • 在使用隐式的 a n d 操 作 符 中 , 只 能 使 用 and操作符中,只能使用 and使regex,例如:{name:{$regex:/^jo/i, $nin:['john']}}
  • 当option选项中包含X或S选项时,只能使用KaTeX parse error: Expected '}', got 'EOF' at end of input: …gex,例如:`{name:{regex:/m.*line/,$options:“si”}}`

例:
db.collection_name.find({name:{$regex:'ss',$options:'$i'}}) 查找name包含ss字符串的所有结果,且忽略大小写。

备份与恢复

备份

mongodump -h dbhost -d dbname -o dbdirectory
参数解释:

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

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

  • -o:备份的数据存放位置,例如:c:\data\dump,该目录需提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

恢复

mongorestore -h <hostname><:port> -d dbname <path>
参数解释:

  • -h :MongoDB所在服务器地址,默认为: localhost:27017。
  • -d :设定恢复后数据库名。
  • :设置备份数据所在位置,例如:c:\data\dump\test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB语法是用于在MongoDB数据库中执行操作的语法规则。其中一些常见的语法包括: 1. 数据库链接:用于建立与MongoDB数据库的连接。可以使用MongoDB连接字符串或MongoDB连接对象来进行连接。 2. 条件操作符:用于比较和筛选集合中的数据。常见的条件操作符包括大于($gt)、小于($lt)、大于等于($gte)、小于等于($lte)、等于($eq)和非等于($ne)等。 3. 插入数据:使用insert()方法向集合中插入数据。可以使用语法格式如下:db.集合名.insert({字段名: 值})。 总结起来,MongoDB语法包括数据库链接、条件操作符和插入数据等基本操作。使用这些语法可以对MongoDB数据库进行增删改查等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MongoDB 语法大全](https://blog.csdn.net/weixin_38316697/article/details/126085968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【数据库】——MongoDB常用语法](https://blog.csdn.net/weixin_44697562/article/details/110122105)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值