博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongodb之增删改查操作
阅读量:4323 次
发布时间:2019-06-06

本文共 4049 字,大约阅读时间需要 13 分钟。

一、创建一个数据库

  在我们使用MongoDB数据库时引进了这样一个知识,“对于mongodb,使用了不存在的对象,就等于在创建这个对象”,所以创建数据库的操作就比较简单

在我们使用mysql数据库时use指令是进入数据库的操作,而在MongoDB中不仅有进入的指令同时,如果数据库不存在时则会创建,让我们康康数据库里面有什么

查看当前数据库,

唉?,刚刚不是已经创建好数据库了么,怎么会没有呢!,是不是这样想的,当然这是正常的,是MongoDB的一种存储机制,想要数据库能被看到就需要在数据库中插入一个表,要想看到表也同理,也需要在表中插入一条数据。

这样我们就能看到创建好的数据库了。

创建数据库的方式:

use 数据库名   #进入/创建数据库db.表名.insert({})     #创建表&向表中插入空数据

二,增

插入数据(insert     insertOne     insertMany) 

insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐

使用insertOne插入一条数据:

db.user_info.insertOne({
"name":"wanglai","age":21,"hobby":"girl"})

使用insertMany插入多条数据:

db.user_info.insertMany([    {
"name":"paqqiuli","age":24,"hobby":"pid"}, {
"name":"Izayoi Sakuya","age":22,"hobby":"bl"} ])

三,删

db.user.remove({}) # 官方不推荐使用了db.user.deleteOne({id:7})   # 删除一条id=7的数据db.user.deleteMany({name:"ttt"})  # 删除所有name=“ttt"的数据db.user.deleteMany({})  # 清空数据库db.user.drop()  # 清空数据库

四, 改

db.user_info.updateOne({
"hobby":"IT"},{$set:{
"hobby":"game"}})  #修改hobby为IT的一条数据db.user.updateMany({age:20},{$set:{name:"jjj"}}) # 修改age=20的所有数据的 name为"jjj"db.user.updateMany({age:20},{$set:{hobby: ["ooo", "xxx"]}}) # 可以直接修改为一个数组

针对Field的$修改器

$set 修改器之一 设定 将某Key设定为某值:

db.user.updateMany({age:20},{$set:{name:"jjj"}})

$unset:删除当前的Fields

db.user.updateOne({id:7}, {$unset: {hobby: "" }})  # 把id为7的数据,删除hobby这个字段db.user.updateOne({id:4}, {$unset: {hobby: 0 }})  # 把id为4的数据,删除hobby这个字段

$inc 在原有值基础上增加 (int类型,就是增加或减少之(负数),string类型,就是字符串拼接)

db.user.updateOne({name:"mmm"},{$inc: {age:5}})  # 给name="mmm"的数据,的age在原来的基础上加上5

针对Arrays的$修改器

$push 在Arrays中添加一个元素 

db.user.updateOne({name: "mmm"},{$push:{hobby:"哈哈"}})  # 给name="mmm"的数据中的hobby对于的值(列表),中添加一个值为"哈哈”db.user.updateOne({name: "jjj"},{$push: {hobby: "dfd"}})  # 该条数据没有字段hobby,则创建一个hobby,把数据放进

  db.user.updateOne({name:"mmm"},{$push:{hobby: ["ccc","vvv", "bbb"]}}) 只添加第一个进去

  db.user.updateOne({name:"mmm"},{$pushAll:{hobby: ["ccc","vvv", "bbb"]}}) 把列表整体添加进去

$pull 在Arrays中删除一个元素

db.user.updateOne({name:"mmm"},{$pull: {hobby:"ccc"}})  # 在name=mmm这条数据的hobby对应的列表中删掉ccc

$pop 在Arrays中删除最后一个元素或第一个元素

db.user.updateOne({name:"mmm"}, {$pop: {hobby:-1}})  删除第一个db.user.updateOne({name: "mmm"},{$pop:{hobby: 1}}) 删除最后一个

$ : 存储 满足前置条件列表元素的下标索引

db.user.updateOne({name: "mmm", hobby: "哈哈"},{$set:{"hobby.$": "大西瓜"}}) # 将name="mmm"这条数据中的hobby对应的列表中的 “哈哈”,改成“大西瓜”上面的$就是记录前面的"哈哈"在hobby中的索引,所以也可以直接这么写:db.user.updateOne({name: "mmm"},{$set:{"hobby.0": "绿苹果"}}) # 修改name="mmm"的数据中的hobby索引为0的值为"绿苹果"db.user.updateOne({name: "mmm"},{$set:{"hobby.1": "大西瓜"}})

混合用法

db.user.updateOne({name:"hhh"},{$set:{course:[        {course_name: "python", score:100},        {course_name: "vue", score:101},        {course_name: "mysql", score:99}    ]}})   # 插入数据db.user.updateOne({name: "hhh", "course.course_name":"python"},{$inc:{
"course.$.score": 10}}) # $获取了前面数据的索引db.user.updateOne({name: "hhh"},{$inc:{
"course.0.score": 20}})

五,查

db.user.find({})  # 查询所有数据db.user.findOne({name:"lll"})  # 查询name=“lll"的数据

$lt 小于  $gt 大于  $lte 小于等于  $gte 大于等于  $eq : 等于

db.user.find({age:{$lte:19}})  # 查询age小于等于19的数据db.user.find({age:{$gt:19}})  # 查询age大于19的数据

查询$关键字:

{    "_id" : ObjectId("5bc6eac2613e5c72d4c888b0"),    "id" : 10,    "name" : "mmm",    "age" : 30,    "hobby" : [        "绿苹果",        "大西瓜",        "小红枣",        "ccc",        "vvv"    ]}

对于上述数据:

$all 满足所有元素的数据

db.user.find({hobby: {$all: ["大西瓜"]}})  # 可以找到db.user.find({hobby: {$all: ["大西瓜", "ccc"]}})   # 可以找到# 主要元素在数据中,就可以找到,可以和原始数据不一样!

$in 满足其中一个元素的数据

db.user.find({hobby: {$in: ["ccc", "vvv"]}})  # 数据在要查询数据的hobby中就可以查到

$or 满足其中一个字段的数据

db.user.find({$or: [{name:"lll"}, {id:1}]})  # 查询 name=”lll“ 或者 id=1的数据db.user.deleteMany({$or:[{id:8},{id:9}]})  # 删除id=8 或者 id=9的数据

limit(x):

只查询前x条数据

skip(x):

跳过前x条数据

sort({ id:-1 }):

根据id字段进行倒序排列:-1 正序排列:1

分页使用

db.user.find({}).sort({id:1}).skip(0).limit(3)  # 第一页db.user.find({}).sort({id:1}).skip(3).limit(3)  # 第二页db.user.find({}).sort({id:1}).skip(6).limit(3)  # 第三页db.user.find({}).sort({id:1}).skip(9).limit(3)  # 第四页db.user.find({}).sort({id:1}).skip(12).limit(3)  # 第五页

 

转载于:https://www.cnblogs.com/qq631243523/p/10277510.html

你可能感兴趣的文章
hdu4348 - To the moon 可持久化线段树 区间修改 离线处理
查看>>
正则表达式的搜索和替换
查看>>
个人项目:WC
查看>>
地鼠的困境SSL1333 最大匹配
查看>>
flume+elasticsearch+kibana遇到的坑
查看>>
【MM系列】在SAP里查看数据的方法
查看>>
C#——winform
查看>>
CSS3 transform制作的漂亮的滚动式导航
查看>>
《小强升职记——时间管理故事书》读书笔记
查看>>
Alpha 冲刺(3/10)
查看>>
Kaldi中的Chain模型
查看>>
spring中的ResourceBundleMessageSource使用和测试示例
查看>>
css规范 - bem
查看>>
电梯调度程序的UI设计
查看>>
转自 zera php中extends和implements的区别
查看>>
Array.of使用实例
查看>>
【Luogu】P2498拯救小云公主(spfa)
查看>>
如何获取网站icon
查看>>
几种排序写法
查看>>
java 多线程的应用场景
查看>>