MongoDB使用及基础语法记录

目录

安装

常用操作命令

插入数据 

insert()

save()

js循环插入

查询

条件查询:

模糊查询-正则表达式

排序和分页

更新数据

更新单个示例

更新多个示例

findAndModify  查询更新

删除数据

remove()

delete()


安装

        官网下载地址:官网下载地址: MongoDB Community Download | MongoDB 

我下载的一个windows版本的zip文件

 解压后

在该目录下新增两个文件夹和一个文件:data logs mongo.config

 在data文件夹下新增 db文件夹

 在logs文件夹下新增 mongo.log文件

在mongo.config中配置如下内容(自行修改自己的安装地址):

dbpath=D:\setup-util\mongodb-win32-x86_64-windows-5.0.6\data\db #数据库路径
logpath=D:\setup-util\mongodb-win32-x86_64-windows-5.0.6\logs\mongo.log #日志输出文件路径
port=27017 #端口号默认为27017

接下来用管理员身份运行 cmd

cd到安装目录/bin下面,运行命令(自行调整路径):

mongod  --dbpath D:\setup-util\mongodb-win32-x86_64-windows-5.0.6\data\db

 打开浏览器,访问 http://localhost:27017/

 启动就已经完成了,为了方便下次启动,注册服务

mongod --dbpath D:\setup-util\mongodb-win32-x86_64-windows-5.0.6\data\db --logpath D:\setup-util\mongodb-win32-x86_64-windows-5.0.6\logs\mongo.log --install --serviceName "MongoDB"

运行完成打开服务可以找到,尝试重启一下

 至此,安装完成

常用操作命令

        我没有用原生的命令,还是用工具爽,本文使用navicat for mongoDB

先尝试连接一下数据库:

        写个名字就行了

 然后新建数据库,新建集合(集合就是mysql的表)

插入数据 

insert()

         db.collection.insert  插入数据    示例: db.one_demo.insert({aaa:"aaa"})

         db.collection.insertOne  插入一条数据     示例: db.one_demo.insertOne({aaa:"aaa"})

         db.collection.insertMany  插入多条数据        

                示例: db.one_demo.insertOne([{aaa:"aaa"},{bbb:"bbb"}])

save()

        db.collection.save  同上使用,区别:

        save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。

        insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据

         

js循环插入

        循环插入50条数据,语法就是js的,还可以使用Math等

var tags = ["nosql", "mongodb", "document", "developer", "popular"];
var books = [];
for(var i = 0; i < 50; i++) {
    var tagIdx = Math.floor(Math.random() * tags.length);
    var favCount = Math.floor(Math.random() * 100);
    var book = {
        title: "book-" + i,
        tag: tags[tagIdx],
        favCount: favCount,
        author: "xxx" + i
    };
    books.push(book)
} 
db.one_demo.insertMany(books);

查询

        db.collection.find(query,projection)

        query:可选,使用查询操作符指定查询条件

        projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。投影时,id为1的时候,其他字段必须是1;id是0的时候,其他字段可以是0;如果没有_id字段约束,多个其他字段必须同为0或同为1。

         最简单的查询实例: db.one_demo.find()

条件查询:

#查询带有nosql 标签的 book 文档: 
db.one_demo.find({tag:"nosql"}) 
#按照id 查询单个 one_demo 文档: 
db.one_demo.find({_id:ObjectId("62343737124d0000e5007fd3")}) 
#查询分类为“travel” 、收藏数超过 60 个的 one_demo 文档: 
db.one_demo.find({type:"travel", favCount:{$gt:60}})

对照表       

mysqlmangDB
a = 1{a: 1}
a <> 1{a: {$ne: 1}}
a > 1{a: {$gt: 1}}
a >= 1{a: {$gte: 1}}
a < 1{a: {$lt: 1}}
a <= 1{a: {$lte: 1}}
a = 1 AND b = 1{a: 1, b: 1}或{$and: [{a: 1}, {b: 1}]}
a = 1 OR b = 1{$or: [{a: 1}, {b: 1}]}
a IS NULL / a IS NOT NULL{a: {$exists: false}} / {a: {$exists: true}}
a IN (1, 2, 3){a: {$in: [1, 2, 3]}

 

 

 

含义对比:

$lt:存在并小于
$lte:存在并小于等于
$gt:存在并大于
$gte:存在并大于等于
$ne:不存在或存在但不等于
$in:存在并在指定数组中
$nin:不存在或不在指定数组中
$or:匹配两个或多个条件中的一个
$and:匹配全部条件

模糊查询-正则表达式

//使用正则表达式查找title包含so字符串的

db.two_demo.find({title:{$regex:"so"}}) //或者

db.two_demo.find({title:/book/})

排序和分页

        排序

 db.one_demo.find().sort({favCount:1})     //1升序  -1降序

        分页

        查询skip用于指定跳过记录数,limit则用于限定返回结果数量。可以在执行find命令的同时指定skip、limit参数,以此实现分页的功能。

        比如,假定每页大小为10条,查询第3页:

db.two_demo.find().skip(20).limit(10)

db.two_demo.find().limit(10).skip(20)  //都一样

更新数据

        

操作符格式描述
$set{$set:{field:value}}指定一个键并更新值,若键不存在则创建
$unset{$unset : {field : 1 }}删除一个键
$inc{$inc : {field : value } }对数值类型进行增减
$rename{$rename : {old_field_name :new_field_name } }修改字段名称
$push{ $push : {field : value } }将数值追加到数组中,若数组不存在则会进行初始化
$pushAll{$pushAll : {field : value_array }}追加多个值到一个数组字段内
$pull{$pull : {field : _value } }从数组中删除指定的元素
$addToSet{$addToSet : {field : value } }添加元素到数组中,具有排重功能
$pop{$pop : {field : 1 }}删除数组的第一个或最后一个元素

     

更新单个示例

       

 db.one_demo.update({_id:ObjectId("62343737124d0000e5007fc8")},{$inc:{favCount:1}})  #修改id  62343737124d0000e5007fc8 的favCount 字段加一

更新多个示例

       

db.one_demo.update({favCount:{$gte: 90}},{$inc:{favCount:1}})  //这个只会更新一条

        默认情况下,update命令只在更新第一个文档之后返回,如果需要更新多个文档,则可以使用multi选项。

 db.one_demo.update({favCount:{$gte: 90}},{$inc:{favCount:1}},{"multi":true})

        

upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

db.one_demo.update({title:"没有名字"},{$set:{favCount:1}},{upsert:true})

findAndModify  查询更新

        根据输入的选择条件修改并返回单个文档。 默认情况下,返回的文档不显示更新的内容。

        用来保证操作的原子性

        示例:

db.one_demo.findAndModify({
    query:{_id:ObjectId("623447d22cb383d2207935f9")},
    update:{title:"查询并更新"}
})

删除数据

      

remove()

        db.one_demo.remove({favCount:28})//删除favCount等于28的记录

        db.one_demo.remove({favCount:{$lt:25}})//删除favCount小于25的记录

        db.one_demo.remove({})//删除所有记录

        db.one_demo.remove()//报错

        db.one_demo.remove({title:"book"},true) //删除满足条件的一条数据,默认是false全部

delete()

        官方推荐使用deleteOne()和deleteMany()方法删除数据(文档),语法格式如下:

db.books.deleteMany({})//删除集合下全部文档
db.books.deleteMany({title:"novel"})//删除title等于novel的全部文档
db.books.deleteOne({title:"novel"})//删除title等于novel的一个文档


注意:remove、deleteMany等命令需要对查询范围内的文档逐个删除,
如果希望删除整个集合,则使用drop命令会更加高效  db.one_demo.drop() 

关于mongodb的基础增删改查就记录到这儿,方便查阅,后续如果实际工作需要使用高级的,再做记录

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值