MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
下载
https://www.mongodb.com/download-center#community
环境变量:MongoDB\Server\3.4\bin
MongoDB术语
数据库(数据库)、集合(表格)、文档(行)、字段(列)、嵌入文档(表联合)
常用数据类型
String、 Integer 、Boolean、 Double、 Array、 Date、 Timestamp(时间戳)、 Null(用于创建空值)、 Object(用于内嵌文档)
Symbol 符号,该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言
Code 代码类型,用于在文档中存储 JavaScript 代码。
Object ID 对象ID,用于创建文档的 ID。
Binary Data 二进制数据,用于存储二进制数据。
Regular expression 正则表达式类型,用于存储正则表达式。
操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | 1 .启动/关闭 在E:\Program Files\MongoDB\Server\ 3.4 新建目录 db 在E:\Program Files\MongoDB\Server\ 3.4 目录下运行命令:mongod --dbpath=db --rest win+R:输入mongo可使用基本命令操作 mongod --shutdown [关闭] 2 .连接 [连接本地数据库服务器]mongodb://localhost [使用用户名和密码连接登陆到指定数据库]mongodb://admin: 123456 @localhost/test 3 .监控(进入到你安装的MongoDB目录下的bin目录) E:\Program Files\MongoDB\Server\ 3.4 \bin>mongostat [它会间隔固定时间获取mongodb的当前运行状态] E:\Program Files\MongoDB\Server\ 3.4 \bin>mongotop [查看哪些大量的时间花费在读取和写入数据] 4 .基本命令 mongodump -h 127.0 . 0.1 -d dbname -o c:\data\dump[数据备份] 1 )创建、查询 操作符 大于:$gt 小于:$lt 大于等于:$gte 小于等于:$lte 不等于$ne d=({ "a1" : "hello" ,b 1: 45 }) [定义一个变量] use runoob [数据库不存在,则创建数据库,否则切换到指定数据库] show dbs [查看所有数据库] show tables [查看集合] db.userInfo.getIndexes()[查询当前聚集集合所有索引] db.userInfo.dataSize() [查看数据空间大小] db.userInfo.getDB() [得到当前聚集集合所在的] db.userInfo.stats() [得到当前聚集的状态] db.userInfo.totalSize() [得到聚集集合总大小] db.userInfo.storageSize() [聚集集合储存空间大小] db.userInfo.getShardVersion() [Shard版本信息 ] db.userInfo.renameCollection( "users" ) [聚集集合重命名,将userInfo重命名为users] db.runoob.findOne(); db.runoob.find() [查看集合中所有数据] db.runoob.count() [返回文档个数] db.userInfo.find({}, {name: 1 , age: 1 }) [select name, age from userInfo] db.userInfo.find({age:{$gt: 25 }},{name: 1 ,age: 1 }) [select name, age from userInfo where age > 25 ] db.runoob.find({$or:[{age: 22 },{age: 25 }]}) [查找age= 22 或age= 25 的文档] db.col.find({ "likes" : {$gt: 50 }, $or: [{ "by" : "we" },{ "title" : "t1" }]}) [and和or复用] db.funoob.find({id:{$in:[ 12 , 34 , 33 ]}}) [查找id为 12 , 34 , 33 的文档] db.runoob.find({ "name" : {$gt : 100 }}) [获取runoob集合中 "name" 大于 100 的数据] db.col.find({ "title" : 1 ,_id: 0 }).limit( 2 ) [显示符合条件的两条记录] db.col.find({ "title" : 1 ,_id: 0 }).limit( 100 ).skip( 10 ) [读取从 10 条记录后 100 条记录] db.col.find({ "title" : 1 ,_id: 0 }).sort({ "likes" : -1 }) [ col 集合中的数据按字段 likes 的降序排列] db.col.find({name:{$regex: "jack" ,$options: "$i" }}) [正则表达式查询jack不分大小写] db.th 2 .find({name:{$regex: "^j" }}) [查询name字段中j开头的所有文档] db.th 2 .find({name:{$regex: "runoob" }}) [查找包含 runoob 字符串的文章] db.th 2 .find({name:/runoob/}) [查找包含 runoob 字符串的文章] 2 )插入数据 db.runoob.insert({ "name" : "菜鸟教程" }) [use runoob,进入runnob数据库,在集合runboob中插入文档] db.runoob.insert([{name: "tom" },{name: "jack" }]) [插入多个文档] 3 )更新 db.runoob.update({ "ji" : 90 },{$set:{ "ji" : "hello" }}) [将ji为 90 的第一个文档更新为hello] db.test_collection.updateMany({ "age" :{$gt: "10" }},{$set:{ "status" : "xyz" }}) [更新多个文档] 4 )删除 db.dropDatabase() [删除数据库] db.book.drop() [删除集合book] db.book.remove({ "title" : "1" }) [删除文档(可删除多个)] db.book.remove({ "title" : "1" },true) [删除单个文档] 5 )查询分析 db.book.ensureIndex({name: 1 ,id: 1 }) [book集合中创建name、id索引] db.book.find().explain(); [explain 操作提供了查询信息,使用索引及查询统计等] [全文检索] 2.6 版本之前启用全文检索 db.adminCommand({setParameter:true,textSearchEnabled:true}) 或mongod --setParameter textSearchEnabled=true db.book.ensureIndex({ "name" : "text" }) [name字段建立全文检索] db.book.find({$text:{$search: "runoob" }})[使用全文索引搜索文章中的关键词 runoob] db.book.getIndexes() [删除全文索引] 6 )原子操作 $set:用来指定一个键并更新键值,若键不存在并创建 { $set : { field : value } } $unset:用来删除一个键 { $unset : { field : 1 } } $inc:可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作 { $inc : { field : value } } $push:把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去 { $push : { field : value } } $pushAll:同$push,只是一次可以追加多个值到一个数组字段内 { $pushAll : { field : value_array } } $pull:从数组field内删除一个等于value值。 { $pull : { field : _value } } $addToSet:增加一个值到数组内,而且只有当这个值不在数组内才增加 $pop:删除数组的第一个或最后一个元素 { $pop : { field : 1 } } $rename:修改字段名称 { $rename : { old_field_name : new_field_name } } $bit:位操作,integer类型 {$bit : { field : {and : 5 }}} 7 )MapReduce 命令 使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理。 db.collection.mapReduce( function(){emit(key,value);},//map函数 function(key,values){return reduceFunction},//reduce函数 { out:collection, query:documet, sort:document, limit:number, } ) 参数说明: map :映射函数 (生成键值对序列,作为 reduce 函数参数)。 reduce 统计函数,reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value。。 out 统计结果存放集合 (不指定则使用临时集合,在客户端断开后自动删除)。 query 一个筛选条件,只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合) sort 和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制 limit 发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大) |
分类:
mongodb
标签:
mongodb增删改查
, mongodb
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统