MongoDB常用命令

Mongodb命令

​ 删除数据库

​ db.dropDatabase()

​ 创建集合

​ db.createCollection(name)

​ name: 要创建的集合名称

​ 集合删除

​ db.collection.drop()

​ 或 db.集合.drop()

​ 单个文档插入

​ db.集合.insert( { writeConcern: , ordered: } )

​ 批量插入

​ db.集合.insertMany( { writeConcern: , ordered: } )

​ 大括号里面是json形式的语句

​ 因为批量插入由于数据较多容易出现失败,因此,可以使用try catch进行异常捕捉处理

​ try {

​ db.集合.insertMany([{},{},{}])

​ } catch (e) { print (e); }

查询数据的语法

​ db.collection.find([query], [projection])

​ query:可选。使用查询运算符指定选择筛选器。若要返回集合中的所有文档,请省略此参数或传递空文档 ( {} )。

​ projection:可选。指定要在与查询筛选器匹配的文档中返回的字段(投影)。若要返回匹配文档中的所有字段, 请省略此参数

​ 查询所有

​ db.集合.find() 或 db.集合.find({})

​ 如果你只需要返回符合条件的第一条数据,我们可以使用findOne命令来实现,语法和find一样。

​ db.集合.findOne({ })

​ 投影查询

​ 如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)。

​ 如:查询结果只显示 _id、userid、nickname :

​ db.comment.find({userid:“1003”},{userid:1,nickname:1})

​ { "id" : “4”, “userid” : “1003”, “nickname” : “凯撒” }

​ { “_id” : “5”, “userid” : “1003”, “nickname” : “凯撒” }

​ 如:查询结果只显示 、userid、nickname ,不显示 _id :

​ db.comment.find({userid:“1003”},{userid:1,nickname:1,_id:0})

{ “userid” : “1003”, “nickname” : “凯撒” }

​ { “userid” : “1003”, “nickname” : “凯撒” }

更新文档的语法:

​ 覆盖的修改

​ db.集合.update({},{)})

​ 执行后,我们会发现,这条文档除了修改的字段其它字段都不见了

​ 局部修改

​ db.集合.update({要修改的部分},{$set:{修改之后的部分}})

​ 批量的修改

​ db.集合.update({},{$set:{}},{multi:true})

​ 提示:如果不加后面的参数,则只更新符合条件的第一条记录

​ 列值增长的修改

​ 如果我们想实现对某列值在原有值的基础上进行增加或减少,可以使用 $inc 运算符来实现。

​ db.集合.update({},{$inc:{} })

删除文档的语法结构

​ db.集合.remove(条件)

​ 以下语句可以将数据全部删除,请慎用

​ db.集合.remove({})

​ 如果删除_id=1的记录,输入以下语句

​ db.集合.remove({_id:“1”})

统计查询

​ 统计查询使用count()方法,语法如下:

​ db.collection.count(query, options)

​ query:查询选择条件。

​ options:可选。用于修改计数的额外选项。

​ 统计所有记录数:

​ db.集合.count()

​ 默认情况下 count() 方法返回符合条件的全部记录条数。

分页列表查询

​ 可以使用limit()方法来读取指定数量的数据,使用skip()方法来跳过指定数量的数据。

​ db.集合.find().limit(NUMBER).skip(NUMBER)

​ 如果你想返回指定条数的记录,可以在find方法后调用limit来返回结果(TopN),默认值20,例如:

​ db.集合.find().limit(3)

​ skip方法同样接受一个数字参数作为跳过的记录条数。(前N个不要),默认值是0

​ db.集合.find().skip(3)

​ 分页查询:需求:每页2个,第二页开始:跳过前两条数据,接着值显示3和4条数据

​ //第一页 db.集合.find().skip(0).limit(2)

​ //第二页 db.集合.find().skip(2).limit(2)

​ //第三页 db.集合.find().skip(4).limit(2)

排序查询

​ sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用 于降序排列。

​ db.集合.find().sort({KEY:1})

​ 或 db.集合名称.find().sort(排序方式)

提示: skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit(),和命令编写顺序无关

正则的复杂条件查询

​ MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:

​ db.collection.find({field:/正则表达式/})

​ 或 db.集合.find({字段:/正则表达式/})

​ 提示:正则表达式是js的语法,直接量的写法。

​ 例如,我要查询评论内容包含“开水”的所有文档,代码如下:

​ db.集合.find({content:/开水/})

​ 如果要查询评论的内容中以“专家”开头的,代码如下:

​ db.集合.find({content:/^专家/})

比较查询

​ <, <=, >, >= 这个操作符也是很常用的,格式如下:

​ db.集合名称.find({ “field” : { $gt: value }}) // 大于: field > value

​ db.集合名称.find({ “field” : { $lt: value }}) // 小于: field < value

​ db.集合名称.find({ “field” : { $gte: value }}) // 大于等于: field >= value

​ db.集合名称.find({ “field” : { $lte: value }}) // 小于等于: field <= value

​ db.集合名称.find({ “field” : { $ne: value }}) // 不等于: field != value

包含查询

​ 包含使用$in操作符

​ 不包含使用$nin操作符。

​ 示例:查询评论的集合中userid字段包含1003或1004的文档

​ db.comment.find({userid:{$in:[“1003”,“1004”]}})

条件连接查询

​ 我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联。(相 当于SQL的and) 格式为:

​ $and:[ { },{ },{ } ]

​ 如果两个以上条件之间是或者的关系,我们使用 操作符进行关联,与前面 and的使用方式相同 格式为:

​ $or:[ { },{ },{ } ]

​ 示例:查询评论集合中likenum大于等于700 并且小于2000的文档:

​ db.comment.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: and:[{likenum:{gte:NumberInt(700)}},{likenum:{$lt:NumberInt(2000)}}]})

索引的查看

​ db.collection.getIndexes()

​ 提示:该语法命令运行要求是MongoDB 3.0+

​ 默认_id索引: MongoDB在创建集合的过程中,在 _id 字段上创建一个唯一的索引,默认名字为 id ,该索引可防止客户端插入两个具有相同值的文 档,您不能在_id字段上删除此索引。 注意:该索引是唯一索引,因此值不能重复,即 _id 值不能重复的。在分片集群中,通常使用 _id 作为片键。

索引的创建

​ 说明: 在集合上创建索引。 语法:

​ db.collection.createIndex(keys, options)

​ keys:包含字段和值对的文档,其中字段是索引键,值描述该字段的索引类型。对于字段上的升序索引,请 指定值1;对于降序索引,请指定值-1。比如: {字段:1或-1} ,其中1 为指定按升序创建索引,如果你 想按降序来创建索引指定为 -1 即可。另外,MongoDB支持几种不同的索引类型,包括文本、地理空 间和哈希索引。

​ options:可选。包含一组控制索引创建的选项的文档.

​ options(更多选项)列表:

在这里插入图片描述

提示: 注意在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex() ,之后的版本使用了 db.collection.createIndex() 方法, ensureIndex() 还能用,但只是 createIndex() 的别名。

索引的移除

​ 说明:可以移除指定的索引,或移除所有索引

​ 一、指定索引的移除

​ db.collection.dropIndex(index)

​ index:指定要删除的索引。可以通过索引名称或索引规范文档指定索引。若要删除文本索引,请指定 索引名称。

​ 二、所有索引的移除

​ db.collection.dropIndexes()

​ 提示: _id 的字段的索引是无法删除的,只能删除非 _id 字段的索引。

索引的使用

​ 执行计划

​ 分析查询性能(Analyze Query Performance)通常使用执行计划(解释计划、Explain Plan)来查看查询的情况,如查询耗费的时间、是 否基于索引查询等。

​ 那么,通常,我们想知道,建立的索引是否有效,效果如何,都需要通过执行计划查看。

​ 语法:

​ db.collection.find(query,options).explain(options)

​ 关键点看: “stage” : “COLLSCAN”, 表示全集合扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值