现在正在学习NoSQL这门课程,上节课已经安装好mongodb,现在记录一下MongoDB的简单命令。
> use 数据库表名
> db
此时可以进行查看是否创建成功
> show dbs
发现我们刚才创建的asd并不在数据库的列表中,如果要显示它,我们需要向asd数据库插入一些数据,操作如下:
>db.asd.insert({"name":"ASD"})
此刻我们再来用命令show dbs 就可以看到我们刚才创建的asd数据库了,具体操作结果如下:
这样子就创建好一个数据库了。
我们先查看一下所有的数据库
>show dbs
然后我们进入asd数据库
> use asd
然后就可以进行删除
> db.dropDatabase()
执行完之后我们在用命令show dbs 检查是否删除成功,效果图如下:
在test数据库中创建asd集合
> use test
> db.createCollection("asd")
使用show collections 命令来查看是否创建集合成功
> show collections
在数据库test中,查看已存在的集合
> use test
> show collections
接着对你将要删除的集合进行操作,这里删除asd集合
>db.asd.drop()
语法格式
> db.COLLECTION_NAME.insert(document)
如:
> db.student.insert({"sno":"201601","sex":"1","age":"20","name":"小张"})
> db.student.insert({"sno":"201602","sex":"1","age":"26","name":"小王"})
> db.student.insert({"sno":"201603","sex":"2","age":"23","name":"小红"})
> db.student.insert({"sno":"201604","sex":"1","age":"21","name":"小张儿"})
> db.student.insert({"sno":"201605","sex":"2","age":"17","name":"小玉儿"})
具体示例:
> db.student.update({"sno":201604},{$set:{"name":"张三"}})
修改结束之后,在使用find()函数检验是否修改成功
> db.student.find({"sno":"201604"}).pretty()
删除分为两种,一种是按条件删除,一种是全部删除,语法如下:
按条件删除
db.COLLECTION_NAME.remove(
,
{
justOne: ,
writeConcern:
}
)
删除所有文档
db.COLLECTION_NAME.remove({})
db.COLLECTION_NAME.deleteMany({})
示例如下:
按条件删除:
> db.student.remove({"sno":"201605"})
语法格式
db.COLLECTION_NAME.find(query, projection)
示例:
(1)按条件查询
> db.student.find({"sno":"201604"})
> db.student.find({"name":/^小/})
> db.student.find({"age":{$gt:"22"}})
(4)查询age在20-25之间的
db.student.find({"age":{$gte:"20",$lt:"25"}})
db.student.find({$or:[{"sex":2},{"age":{$lt:"25"}}]})
语法格式
db.COLLECTION_NAME.find().sort({key1:1, key2:1})
示例:
> db.student.find({}).sort({"sex":-1,"age":1})
> db.lsl.renameCollection("student")
表明将集合lsl名字重命名为student
语法格式
db.COLLECTION_NAME.find().limit(NUMBER)
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
使用 limit() 方法读取指定数量的数据,还可以使用 skip() 方法来跳过指定数量的数据
如下图:
> db.student.aggregate([{$group:{"_id":"$sex","result":{$sum:1}}}])
> db.student.getIndexes()
(1)给集合person 的name 字段创建索引
> db.person.createIndex({"name":1})
(2)给集合asdperson的name字段创建索引,并指定索引的名称为idx_name
> db.person.createIndex({"name":1},{"name":"idx_name"})
(3)给集合aperson的name和age字段创建复合索引
> db.person.createIndex({"name":1,"age":1})
语法
db.COLLECTION_NAME.find({
‘FIELD_NAME’ : {
$near:{
$geometry:{
type: “Point”,
coordinates: [ , ]
},
$maxDistance: ,
$minDistance:
}
}
})
示例如下:
(1)先对集合places插入5条测试数据
> db.palces.insert({'loc':[106.711770,26.588760],'name':'中华北路星力折扣超市'})
> db.places.insert({'loc':[106.710970,26.570140],'name':'人民广场沃尔玛'})
> db.places.insert({'loc':[106.711290,26.599430],'name':'盐务街北京华联'})
> db.places.insert({'loc':[106.714330,26.580970],'name':'富水北路北京华联'})
> db.places.insert({'loc':[106.705770,26.581270],'name':'瑞金中路红华便利'})
(2)创建索引
> db.places.ensureIndex({'loc':'2dsphere'})
(3)查询云岩广场[106.711836,26.588594]附近1000米范围的点
> db.places.find({'loc':{$near:{$geometry:{type:"Point",coordinates:[106.711836,26.588594]},$maxDistance:1000}}})
(1)在集合demo中插入3条数据
> db.demo.insert({"info":"Robots are superior to humans"})
> db.demo.insert({"info":"Humans are greate"})
> db.demo.insert({"info":"Robots are only smart machine"})
> db.demo.createIndex({"info":"text"})
(3.1)检索包含Robots的文档
> db.demo.find({$text:{$search:"Robots"}})
(3.2)检索包含Robots或Humans的文档
> db.demo.find({$text:{$search:"Robots Humans"}})
(3.3)检索包含Robots但不包含Humans的文档
> db.demo.find({$text:{$search:"Robots -Humans"}})
(3.4)检索词组"Robots are"
> db.demo.find({$text:{$search:'"Robots are"'}})
db.demo.find({$text:{$search:"Robots"}},{"score":{"$meta":"textScore"}})
(1.1)创建用户
> db.createUser(
{
user: "testadmin",
pwd: "2012",
roles: [ { role: "readWrite", db: "test" } ]
} )
(1.2)创建用户结束后,需要重新启动mongodb服务,开启认证
> mongod --dbpath D:\Software\mongo\data\db --auth
(1.3)
> use test
> db.auth('testadmin','2012')
> db.updateUser("testadmin",
{roles:[{role:"read",db:"test"}]
})
(3)修改用户密码
> db.changeUserPassword("testadmin","2018")
> mongodump -h localhost --port 27017 -d test -c place -o D:\backup -u testadmin -p 2018 --authenticationDatabase test