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
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭