MongoDB常用语法及基本使用

MongoDB常用语法及基本使用
MongoDB中的三个概念:

数据库(database): 一个仓库,在其中可以存放集合。

集合(collection): 概念相当于MySQL中的表,类似于一个数组,在集合中可以存放文档。

文档(document): 文档是数据库中的最小单位,我们存储和操作的内容都是文档。

注意:在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合。

我们可以使用一些图形化界面工具来帮助我们操作MongoDB,如:NoSQL Manager for MongoDB。

1. 基本指令
show dbs/databases: 查看当前所有的数据库

use (数据库名): 进入到指定的数据库中

db: 显示当前所处的数据库

show collections: 显示当前数据库中所有的集合

2. MongoDB的CRUD(增删改查)操作


2.1 插入: db.<collection>.insert(doc)
向数据库的指定集合中插入一个或多个文档

例如:

db.stu.insert({name:'Tom', age:18, gender:'male'})

db.stu.insert([{name:'Jerry', age:18, gender:'male'},{name:'Herry',age:20,gender:'female'}])

如果插入时没有给文档指定_id属性,则数据库会自动为文档添加_id属性(ObjectId)

相关方法:

db.<collection>.insertOne() —— 插入一个文档对象

db.<collection>.insertMany() —— 插入多个文档对象

如何插入10000条数据?

可以用for循环:

    for(var i=0; i<10000; i++){
        db.numbers.insert({num:i});
    }
1
2
3
但是要注意效率与性能问题:尽量减少对数据库的操作!

 var arr = [];
 for(var i=0; i<10000; i++){
     arr.push({num:i});
 }
 db.numbers.insert(arr);
1
2
3
4
5


2.2 查询: db.<collection>.find()
查询集合中的所有文档,返回的是一个数组。

例: db.stu.find()

可以接收一个对象作为条件参数,表示查询符合条件的文档,{}表示查询所有。

例: db.stu.find({age:20})

支持通过内嵌文档的属性进行查询,通过.来匹配,注意属性名必须加引号!

例: db.stu.find({'hobby.movies':'comedy'})

并不是说属性值一定要等于该值,如果属性值是一个数组,只要数组中包含该值即可!

相关方法:

db.<collection>.findOne() —— 查询集合中符合条件的第一个文档,返回的是一个文档对象。

db.<collection>.find({}).count() —— 查询集合中符合条件的文档的数量,返回一个数值。

db.<collection>.find({}).limit(10) —— 设置返回查询的数据的上限。

db.<collection>.find({}).skip(10).limit(10) —— 返回第11条到第20条数据。

db.<collection>.find({}).sort({num:1, age:-1}) —— 传递一个对象来指定排序规则,1表示升序,-1表示降序

MongoDB会自动调整sort、skip和limit的位置,谁写前谁写后并无大碍。

distinct()对数据进行去重: db.stu.distinct('class',{age:{$gt:18}}) —— 查找年龄大于18的人的班级(去重)

投影:

在做查询时,可以在第二个参数设置查询结果的投影,1表示显示,0表示不显示。

db.<collection>.find({}, {name:1}) —— 显示该集合文档的name字段和id字段(id默认显示)。

一些查询相关的运算符:

$gt、$lt、gte、lte

db.stu.find({num:{$gt:20, $lt:30}}) —— 返回num值大于20小于30的文档。

$or表示或,只要满足数组其中一个条件即可:

db.stu.find({$or:[{num:{$lt:100}}, {num:{$gt:200}}]}) —— 返回num值小于100或者大于200的文档。

2.3 修改: db.<collection>.update({查询条件},{新对象},{options})
默认情况下会使用新对象来替换旧的对象。

如果需要修改指定的属性而不是替换,需要使用修改操作符来完成修改

$set 可以用来增加或修改文档中的指定属性

如: db.stu.update({"_id":1}, {$set:{age:22,address:'China'}})

$unset 可以用来删除文档中的指定属性

如: db.stu.update({"_id":1}, {$unset:{address:'这里是什么不重要,反正要删除'}})

update()默认情况下只改变一个,如果需要同时修改多个,增加第三个配置参数{multi:true},或者使用updateMany()。

如果属性是一个数组,需要往数组中加入新的元素,则可以使用操作符$push:

如: db.stu.update({username:'Tom'},{$push:{'hobby.movies':'Mr Bean'}})

$each可以对数组进行解构:{$push: {a: {$each: [1,2]}}} —— 向数组a中加入1和2。

$addToSet操作符也可向数组中添加一个新元素,与$push的区别是,不允许添加重复的元素。

使用操作符$pop从数组中移除一个元素,1代表最后一个元素,-1代表第一个元素:

{$pop: {a: 1}} —— 从数组a中移除最后一个元素

{$pop: {a: -1}} —— 从数组a中移除第一个元素

使用操作符$pull从数组中移除所有的指定元素:

{$pull: {a: 5}} —— 移除数组a中所有值为5的元素。

使用操作符$pullAll来移除所有的多个指定元素:

{$pullAll: {a: [5, 6]}} —— 移除数组a中所有值为5或6的元素。

让属性值在原有基础上自增,使用操作符$inc:

db.stu.updateMany({num:{$lt:1000}}, {$inc:{num:400}}) —— 让所有num小于1000的文档num值增加400
相关方法:

db.<collection>.updateOne() —— 修改一个符合条件的文档

db.<collection>.updateMany() —— 修改多个符合条件的文档

db.<collection>.replaceOne() —— 替换一个文档中的某些属性

2.4 删除: db.<collection>.remove({},Boolean)
remove()必须传入参数,可以根据条件对象来删除文档,传递条件的方式和find()一样,默认情况下会同时删除多个,相当于deleteMany()。

如果传入第二个参数为true,则只会删除一个,相当于deleteOne()。

如果传入第一个参数对象为{},则会清空所有的文档,相当于删除集合,但是性能比较差,不如用db.<collection>.drop()。

相关方法:

db.<collection>.deleteOne() —— 删除一个

db.<collection>.deleteMany() —— 删除多个

db.<collection>.drop() —— 删除集合

db.dropDatabase() —— 删除数据库

一般在实际生产中,数据不会真正地删除,而是做逻辑删除。比如给集合中的每个文档增加一个数据字段isDel,设置值为1,标记为删除。
--------------------- 
作者:尘埃丶落定 
来源:CSDN 
原文:https://blog.csdn.net/longyin0528/article/details/80637799 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值