本文对mongodb的基本命令进行了汇总,希望对学习mongodb的小伙伴有所帮助!
1、挂机命令
>mongod --dbpath d:\mongo
–dbpath指的是存储数据库文件的文件夹。以d盘根目录下的mongo文件夹为例。
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 school --collection score --drop --file d:\data.txt
mongoimport为mongodb的导入数据库命令。通过该命令可以将data.txt文件当中的数据导入到名字为school数据库中的集合名为score的集合当中。 指令说明
–db school //指定导入的数据库,如果数据库不存在会新建。
–collection score //指定导入的集合,如果集合不存在会新建。
–drop //将集合清空后添加数据库。省略该项为在原有数据的基础上追加数据
–file d:\data.txt //导入的文件目录
3、通过mongo命令使用数据库
执行以下命令,运行环境即是mongo的环境了。可以在该环境下执行对数据库的增删改查操作。
>mongo
注:后面的所有命令均在该环境下执行
4、列出所有数据库
> show dbs
admin 0.000GB
local 0.000GB
school 0.000GB
admin与local为自带数据库,school为刚刚创建的数据库。
使用数据库
> use school
switched to db school
以上代码即是要使用名字叫school的数据库。 注:如果要新建数据库,也是use。use一个不存在的,就是新建。比如:
> use city
switched to db city
然后查看数据库:
> show dbs
admin 0.000GB
local 0.000GB
school 0.000GB
你会发现刚才新建的city数据库并没有出现在列表中,而要显示它,我们需要在数据库city中插入数据。
5、插入数据库
首先咱们先创建一个数据库city
> use city
switched to db city
数据库中不能直接插入数据,只能在集合(collection)中插入数据:
> db.userList.insert({name:"xiaoming"})
WriteResult({ "nInserted" : 1 })
userList指的是集合。集合中存储着很多JSON。需要注意的是userList是第一次使用,集合会自动创建。否则为在原来的基础上追加数据。 通过db.userList.find()查看集合当中的数据:
> db.userList.find()
{ "_id" : ObjectId("5b6ef62d90b88aa984b5ed21"), "name" : "xiaoming" }
查看当前数据库列表:
> show dbs
admin 0.000GB
local 0.000GB
city 0.000GB
school 0.000GB
到此你会发现数据库city也已经创建好了。
6、查看当前所使用数据库
> use city
switched to db city
> db
city
> use school
switched to db school
> db
school
通过db命令可以查看当前所在的数据库。
7、删除数据库
假如现在要将数据库city删除掉,首先要进入到该数据库中:
> use city
switched to db city
然后执行dropDatabase命令:
> db.dropDatabase()
{ "dropped" : "city", "ok" : 1 }
查看数据库列表:
> show dbs
admin 0.000GB
local 0.000GB
school; 0.000GB
你会发现数据库city通过db.dropDatabase()命令删除掉了。
8、查找数据
进入到数据库school
> use school
switched to db school
通过find可以查找数据库school中集合为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({"transcript.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
参考链接: www.runoob.com/mongodb/mon…
官网地址:www.mongodb.com/