mongodb入门教程之命令汇总
MongoDB 是由 C++ 语言编写的一个面向文档存储的数据库,操作起来比较简单和容易。MongoDB旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。同时MongoDB也是最适合前端小伙伴学习的一门数据库。
本文对mongodb的基本命令进行了汇总,希望对学习mongodb的小伙伴有所帮助!
1、挂机命令
>mongod --dbpath d:\mongo
–dbpath指的是存储数据库文件的文件夹。一旦执行以上命令就不要关了。一旦出现问题,数据库就会自动关闭了。如果需要人为退出可以ctrl+c
2、批量导入数据
挂机命令执行后,可以最小化,不要管它了!
首先咱们可以在d盘根目录创建一个名字叫做data的txt文件,内容为:
{"name":"张三","age":18,"sex":"男","transcript":{"yuwen":50,"shuxue":100,"yingyu":90}} {"name":"李四","age":212,"sex":"女","transcript":{"yuwen":10,"shuxue":100,"yingyu":90}} {"name":"王五","age":31,"sex":"男","transcript":{"yuwen":12,"shuxue":4356,"yingyu":45}} {"name":"赵六","age":12,"sex":"女","transcript":{"yuwen":50,"shuxue":56,"yingyu":12}} {"name":"严七","age":56,"sex":"男","transcript":{"yuwen":78,"shuxue":100,"yingyu":90}} {"name":"沈八","age":67,"sex":"女","transcript":{"yuwen":78,"shuxue":34,"yingyu":1}}
然后重新打开一个cmd。输入如下命令:
>mongoimport --db zhang --collection score --drop --file d:\data.txt
mongoimport为mongodb的导入数据库命令。通过该命令可以将data.txt文件当中的数据导入到名字为zhang数据库中的集合名为score的集合当中。
–db zhang:指定导入的数据库,如果数据库不存在会新建。
–collection score:指定导入的集合,如果集合不存在会新建。
–drop:将集合清空后添加数据库。省略该项为在原有数据的基础上追加数据
–file d:\data.txt:导入的文件目录
3、通过mongo命令使用数据库
执行以下命令,运行环境即是mongo的环境了。可以在该环境下执行对数据库的增删改查操作。
>mongo注:后面的所有命令均在该环境下执行
4、列出所有数据库
> show dbs admin 0.000GB local 0.000GB zhang 0.000GB
admin与local为自带数据库,zhang为刚刚创建的数据库。
4、使用数据库
> use zhang switched to db zhang
以上代码即是要使用名字叫zhang的数据库。
注:如果要新建数据库,也是use。use一个不存在的,就是新建。比如:
> use wang switched to db wang
然后查看数据库:
> show dbs admin 0.000GB local 0.000GB zhang 0.000GB
你会发现刚才新建的wang数据库并没有出现在列表中,而要显示它,我们需要在数据库wang中插入数据。
5、插入数据库
首先咱们先创建一个数据库wang
> use wang switched to db wang
数据库中不能直接插入数据,只能在集合(collection)中插入数据:
> db.userList.insert({name:"zhangpeiyue"}) WriteResult({ "nInserted" : 1 })
userList指的是集合。集合中存储着很多JSON。需要注意的是userList是第一次使用,集合会自动创建。否则为在原来的基础上追加数据。
通过db.userList.find()查看集合当中的数据:
> db.userList.find() { "_id" : ObjectId("5b6ef62d90b88aa984b5ed21"), "name" : "zhangpeiyue" }
查看当前数据库列表:
> show dbs admin 0.000GB local 0.000GB wang 0.000GB zhang 0.000GB
到此你会发现数据库wang也已经创建好了。
6、查看当前所使用数据库
> use wang switched to db wang > db wang > use zhang switched to db zhang > db zhang
通过db命令可以查看当前所在的数据库。
7、删除数据库
假如现在要将数据库wang删除掉,首先要进入到该数据库中:
> use wang switched to db wang
然后执行dropDatabase命令:
> db.dropDatabase() { "dropped" : "wang", "ok" : 1 }
查看数据库列表:
> show dbs admin 0.000GB local 0.000GB zhang 0.000GB
你会发现数据库wang通过db.dropDatabase()命令删除掉了。
8、查找数据
进入到数据库zhang
> use zhang switched to db zhang
通过find可以查找数据库zhang中集合为score的所有文档
> db.score.find() { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb528"), "name" : "沈八", "age" : 67, "sex" : "女", "transcript" : { "yuwen" : 78, "shuxue" : 34, "yingyu" : 1 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb529"), "name" : "李四", "age" : 212, "sex" : "女", "transcript" : { "yuwen" : 10, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52a"), "name" : "王五", "age" : 31, "sex" : "男", "transcript" : { "yuwen" : 12, "shuxue" : 4356, "yingyu" : 45 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52b"), "name" : "赵六", "age" : 12, "sex" : "女", "transcript" : { "yuwen" : 50, "shuxue" : 56, "yingyu" : 12 } }
精确查找:查找所有性别为男的文档:
> db.score.find({sex:"男"}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52a"), "name" : "王五", "age" : 31, "sex" : "男", "transcript" : { "yuwen" : 12, "shuxue" : 4356, "yingyu" : 45 } }
多个条件:查找所有性别为男,且语文考了78分的文档:
> db.score.find({sex:"男","transcript.yuwen":78}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } }
大于条件:查找所有年龄大于50的文档:
> db.score.find({age:{$gt:50}}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb528"), "name" : "沈八", "age" : 67, "sex" : "女", "transcript" : { "yuwen" : 78, "shuxue" : 34, "yingyu" : 1 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb529"), "name" : "李四", "age" : 212, "sex" : "女", "transcript" : { "yuwen" : 10, "shuxue" : 100, "yingyu" : 90 } } //$gt:大于 $lt:小于 $gte:大于或等于 $lte:小于或等于
模糊查找:查找名字带有张的文档
> db.score.find({name:/张/}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } }
或:查找年龄为12或18的文档
> db.score.find({$or:[{age:12},{age:18}]}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52b"), "name" : "赵六", "age" : 12, "sex" : "女", "transcript" : { "yuwen" : 50, "shuxue" : 56, "yingyu" : 12 } }查找后的信息可以通过sort进行排序(1为正序,-1为倒序)
按照年龄的正序排列:
> db.score.find().sort({age:1}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb52b"), "name" : "赵六", "age" : 12, "sex" : "女", "transcript" : { "yuwen" : 50, "shuxue" : 56, "yingyu" : 12 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52a"), "name" : "王五", "age" : 31, "sex" : "男", "transcript" : { "yuwen" : 12, "shuxue" : 4356, "yingyu" : 45 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb528"), "name" : "沈八", "age" : 67, "sex" : "女", "transcript" : { "yuwen" : 78, "shuxue" : 34, "yingyu" : 1 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb529"), "name" : "李四", "age" : 212, "sex" : "女", "transcript" : { "yuwen" : 10, "shuxue" : 100, "yingyu" : 90 } }
按照语文的成绩倒序排列,如果语文成绩相同,则按年龄的正序排列
> db.score.find().sort({"score.yuwen":-1,age:1}) { "_id" : ObjectId("5b6eef02b9a20d17c08cb52b"), "name" : "赵六", "age" : 12, "sex" : "女", "transcript" : { "yuwen" : 50, "shuxue" : 56, "yingyu" : 12 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52a"), "name" : "王五", "age" : 31, "sex" : "男", "transcript" : { "yuwen" : 12, "shuxue" : 4356, "yingyu" : 45 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb528"), "name" : "沈八", "age" : 67, "sex" : "女", "transcript" : { "yuwen" : 78, "shuxue" : 34, "yingyu" : 1 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb529"), "name" : "李四", "age" : 212, "sex" : "女", "transcript" : { "yuwen" : 10, "shuxue" : 100, "yingyu" : 90 } }可以通过limit取指定的条数
显示前两条记录:
> db.score.find().limit(2) { "_id" : ObjectId("5b6eef02b9a20d17c08cb526"), "name" : "张三", "age" : 18, "sex" : "男", "transcript" : { "yuwen" : 50, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } }
limit指定数字为0,则显示所有数据。在此不再举例。
可以通过skip跳过指定的条数跳过前两条记录
> db.score.find().skip(2) { "_id" : ObjectId("5b6eef02b9a20d17c08cb528"), "name" : "沈八", "age" : 67, "sex" : "女", "transcript" : { "yuwen" : 78, "shuxue" : 34, "yingyu" : 1 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb529"), "name" : "李四", "age" : 212, "sex" : "女", "transcript" : { "yuwen" : 10, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52a"), "name" : "王五", "age" : 31, "sex" : "男", "transcript" : { "yuwen" : 12, "shuxue" : 4356, "yingyu" : 45 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb52b"), "name" : "赵六", "age" : 12, "sex" : "女", "transcript" : { "yuwen" : 50, "shuxue" : 56, "yingyu" : 12 } }另外sort,limit,skip可以结合使用
按年龄的正序,跳过2条记录,显示前3条记录:
> db.score.find().sort({age:1}).skip(2).limit(3) { "_id" : ObjectId("5b6eef02b9a20d17c08cb52a"), "name" : "王五", "age" : 31, "sex" : "男", "transcript" : { "yuwen" : 12, "shuxue" : 4356, "yingyu" : 45 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb527"), "name" : "严七", "age" : 56, "sex" : "男", "transcript" : { "yuwen" : 78, "shuxue" : 100, "yingyu" : 90 } } { "_id" : ObjectId("5b6eef02b9a20d17c08cb528"), "name" : "沈八", "age" : 67, "sex" : "女", "transcript" : { "yuwen" : 78, "shuxue" : 34, "yingyu" : 1 } }
9、修改记录
将名字为“王五”的年龄修改为100
> db.score.update({name:"王五"},{$set:{age:100}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
将所有男同胞,年龄修改为1000
> db.score.update({sex:"男"},{$set:{age:1000}}) ) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
你会发现每次只能有一条记录被修改。
如果有修改多条,可以通过multi来实现。
将所有男同胞,年龄修改为10000
> db.score.update({sex:"男"},{$set:{age:10000}},{multi:true}) WriteResult({ "nMatched" : 3, "nUpserted" : 0, "nModified" : 3 })
完整替换,只需要将$set去掉即可:
> db.score.update({sex:"男"},{age:10000}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
将张三的年龄在原来的基础上加1
> db.score.update({name:"张三"},{$inc:{age:1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
10、删除数据(remove)
删除所有女同胞:
> db.score.remove({sex:"女"})) WriteResult({ "nRemoved" : 3 })
删除所有男同胞,且只删除一条:
> db.score.remove({sex:"男"},{justOne:true}) WriteResult({ "nRemoved" : 1 })
删除掉集合中的所有文档:
> db.score.remove({}) WriteResult({ "nRemoved" : 2 })
11、显示当前数据库当中的所有集合
> show collections score
阅读更多
- MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
- MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
- 【MongoDB数据库】MongoDB 命令入门初探
- MongoDB常用命令汇总
- MongoDB入门教程之C#驱动操作实例
- MongoDB入门教程之常用的运维技术介绍
- 8篇MongoDB教程快速学会入门 第3篇 细说高级操作
- Apache Ant自动化脚本入门教程及常用命令介绍
- MongoDB最简单的入门教程之一 环境搭建
- OpenGL入门教程资源汇总
- Cloud Foundry 入门教程[汇总]
- 3DMax基础入门教程,命令面板的设置简介以及功能
- MongoDB教程快速学会入门 第4篇 索引操作
- MongoDB教程快速学会入门 第6篇 索引操作
- MongoDB常用命令汇总之条件操作符。
- Redis 视频教程 大数据 高性能 集群 NoSQL 设计 实战 入门 命令
- MongoDB入门教程之常用的运维技术介绍
- MongoDB入门教程之聚合和游标操作介绍
- 8篇MongoDB教程快速学会入门 第7篇 运维技术
- [教程]MongoDB 从入门到进阶 (TextSearch)