文章标题 原创 翻译 转载 文章内容 ## 连接mongodb mongo 默认连接到本地端口27017 mongo --host 123.57.244.111 --port 27017 连接远程数据库 ## 插入数据 插入一条数据: db.test.insert({title: "1111111111111111111"}) 循环插入数据: for (var i = 0; i < 100; i++) { db.test.insert({title: i * 1000}) } 插入数组: db.test.insert([{title: "aaaaaaaaaaaaa"}, {title: "bbbbbbbbbbbb"}]) ## 聚合 插入一个0到100的随机年龄 for (var i = 0; i < 100; i++) { db.test.insert({age: Math.round(Math.random() * 100)}); } 统计同一个年龄出现的次数 db.test.aggregate([{$group: {_id: "$age", count: {$sum: 1}}}]) ## 查询 查询所有数据 db.test.find() 查询大于90000的 db.test.find({title: {$gt: 90000}}) 查询大于90000小于93000 db.test.find({title: {$gt: 90000, $lt: 93000}}) 查询一条数据 db.test.findOne() 查询存在字段name的 db.test.find({name: {$exists: true}}) 查询所有文章阅读数大于100的标题 db.posts.find({pv: {$gt: 100}}, {title: 1}).pretty() 查询所有文章阅读数大于100的总数 db.posts.count({pv: {$gt: 100}}) 查询所有文章阅读数大于100,标题包含mongo的文章 db.posts.find({pv: {$gt: 100}, title:/mongo/}).pretty() 查询操作符 $eq:等于 $gt:大于 $gte:大于等于 $in:匹配数组中指定的任何值 $lt:大于 $lte:小于等于 $ne:匹配不等于指定值的所有值 $nin:不匹配数组中指定的值 $size:数量为n的数组 $exists:查询存在某个字段 $type:检索集合中匹配的数据类型 ## 删除记录 删除title大于等于2000的 db.test.remove({title: {$gte: 2000}}) 删除所有记录 db.test.remove({}) ## limit方法 该参数指定从MongoDB中读取的记录条数 读取两条记录 db.test.find().limit(2) ## skip方法 跳过指定数量的数据 读取第三条数据 db.test.find().skip(2) ## sort方法 对数据进行排序,可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,而-1是用于降序排列 。 根据title升序排序 db.test.find().sort({title: 1}) ## distinct方法 返回指定字段的非重复值组成的数组 db.test.distinct("title") ## 查询创建的索引 db.test.getIndexes() 结果: ``` [ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "nodeblog.test" }, { "v" : 2, "key" : { "title" : 1, "count" : 1 }, "name" : "title_1_count_1", "ns" : "nodeblog.test" } ] ``` ## 删除索引,通过上面查到的name,如:title_1_count_1 db.test.dropIndex("title_1_count_1") ## 创建索引 db.test.createIndex({title: 1}) 1:升序, -1:降序 创建联合索引:db.test.createIndex({title: 1, count: 1}) ## 查看命令执行时间 在命令后面增加:explain("executionStats") 如:db.test.find({title: "hello99999"}).explain("executionStats") 结果中的executionTimeMillis就是花费的时间 ## 删除文档 如:删除所有count大于10的文档 db.test.remove({count: {$gt: 10}}) ## 主从复制 下面两个路径必须先创建 1>开启主服务:mongod --master --dbpath e://MongoDB/data/master --port 8888 2>开启从服务:mongod --slave --dbpath e://MongoDB//data//slave --sources 127.0.0.1:8888 --port 8881 可以看到每秒没主服务那边同步数据的日志 [replslave] syncing from host:127.0.0.1:8888 在master中插入一些数据,直接读取slave服务中的数据是不行的。所以关掉master,slave服务,然后按正常方式启动slave 服务,如:mongod --dbpath E://MongoDB//data//slave --port 8881 连接到slave,如:mongo --port 8881,查看之前从master同步过来的数据,如:db.test.find() ## 监控状态,每秒刷新一次 mongostat --port 27017 ## 查看数据库 show dbs ## 使用数据库 use users 只有执行了use才能查找表里的内容 ## 查看当前数据库中的集合(表) show collections ## 导出数据库 mongodump -d nodeblog -o /root/db/bk20170908 -d:导出的数据库名 -o:导出的目录 ## 恢复数据库 mongorestore -d nodeblog --drop e://MongoDB//data//nodeblog --drop:删除原有数据库内容 文章类别 Python Mobile Android Java Shell Life Database Bug Windows IOS Tools Boost Node.js Mac Product Tips C/C++ Golang Javascript React Qt MQ MongoDB Design Web Linux LLM ChatGPT RAG AI 提交