mongo的简单操作
来源:互联网 发布:linux 查看中间几行 编辑:程序博客网 时间:2024/06/03 17:29
1.mongo --port 47017 连接
2.use centralDatabase 运用centralDatabase这个数据库
3.show collections 展示当前数据库中的集合
4.db 查看当前所在数据库
5.创建数据库
use openfire (临时创建 如果不做操作 则离开后被系统删除)
6.在当前数据库删除当前数据库
db.dropDatabase()
7.查看当前库的所有用户
show users
8.查看集合(或者叫表)
show collections
9.创建集合
db.createCollection(“mycollection”)
9.创建集合并制定集合的属性
db.createCollection(“mycol”, { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
10.另一种创建集合
(当插入一条数据时,不存在mongodb会帮我们创建,和创建数据库同理)
db.MySecondCollection.insert({“name” : “ming”})
11.删除当前库的一个集合
db.CollectionName.drop()
12.插入一条数据
db.MyFirstCollection.insert({“_id”:”3”,”title”:”mongotest”,”description”:”this is test”})
注意:插入的都是JSON形式的,所以一定要用{},否则会报错:
Sat Mar 19 14:22:39.160 SyntaxError: Unexpected token :
13.插入一条_id存在的数据
db.MyFirstCollection.insert({“_id”:”3”,”title”:”mm”})
输出:E11000 duplicate key error index: openfire.MyFirstCollection.$_id_ dup key: { : “3” }
解释:_id即是mongodb的默认主键,默认自动生成,我们可以直接设置以达到我们想要的目的
问:插入一条和原来集合完全不一样的数据可以吗?答:可以,所以我们要在程序中规避,手动指定我们一个集合里面的字段,否则就无法实现查询及其他功能了> db.MyFirstCollection.insert({"newTitle":"null"})> db.MyFirstCollection.find();{ "_id" : "3", "title" : "new title", "description" : "this is test" }{ "_id" : ObjectId("56ecf4fe0dceecace97c4506"), "newTitle" : "null" }
14.查看集合第一条记录
db.MySecondCollection.findOne();
输出:{ “_id” : ObjectId(“56ecde0662552d15c443dd4a”), “name” : “ming” }
15.查找一条/多条特定数据
db.MySecondCollection.findOne({“name”:”ming”})
输出:{ “_id” : ObjectId(“56ecde0662552d15c443dd4a”), “name” : “ming” }
16.更新一条记录
db.MyFirstCollection.update({“title”:”mongotest”},{$set:{“title”:”new title”}},true,false)
结果:
db.MyFirstCollection.findOne()
{ “_id” : “3”, “title” : “new title”, “description” : “this is test” }
update详解
db.collection.update(criteria,objNew,upsert,multi)criteria:查询条件objNew:update对象和一些更新操作符upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。更新操作符:1.$inc用法:{$inc:{field:value}}作用:对一个数字字段的某个field增加value示例:db.students.update({name:"student"},{$inc:{age:5}}) 2.$set用法:{$set:{field:value}}作用:把文档中某个字段field的值设为value示例:db.students.update({name:"student"},{$set:{age:23}})3.$unset用法:{$unset:{field:1}}作用:删除某个字段field示例: db.students.update({name:"student"},{$unset:{age:1}})4.$push用法:{$push:{field:value}}作用:把value追加到field里。注:field只能是数组类型,如果field不存在,会自动插入一个数组类型示例:db.students.update({name:"student"},{$push:{"title":"major"}}5.$rename用法:{$rename:{old_field_name:new_field_name}}作用:对字段进行重命名(不是值,是字段)示例:db.students.update({name:"student"},{$rename:{"name":"newname"}})
设置用户权限及访问
1.给admin添加用户
切换到admin库:use admin
添加admin用户:db.addUser(“root”,”admin”)
注意:必须先给admin库添加用户,否则就算给具体的库添加了用户,后续进入依然能操作具体库.
因为默认admin库用户具有最高权限,相当于具体库需要认证时,进入的用户持有的是admin的权限,所以无需认证依然能进行操作.
2.给具体库添加用户
use openfiredb.addUser("openfire","password")
3.重启mongo并在启动时配置需要认证
方法一:退出重启并加上auth参数
./bin/mongod -f conf/conf.properties –auth(注意是两个-)
方法二:修改配置文件,加上参数(推荐)
auth=true
3.测试权限
>use openfire>db.MySecondCollection.findOne();Sat Mar 19 14:04:55.653 error: { "$err" : "not authorized for query on openfire.MySecondCollection", "code" : 16550} at src/mongo/shell/query.js:128
4.认证并操作
//此处应该设置成更加恰当的用户名及密码> db.auth("openfire","password")1> db.MySecondCollection.findOne(){ "_id" : ObjectId("56ecde0662552d15c443dd4a"), "name" : "ming" }>
5.另一种方法认证
在进入mongo时候加上数据库及用户名、密码
./bin/mongo openfire -uopenfire -ppassword
root@test:/opt/mongotest/single/mongo# ./bin/mongo openfire -uopenfire -ppasswordMongoDB shell version: 2.4.6connecting to: openfire> dbopenfire> db.MySecondCollection.findOne(){ "_id" : ObjectId("56ecde0662552d15c443dd4a"), "name" : "ming" }>
mongdb进阶
1.find()指定返回字段
作用:减少流量
如果key:value,返回的value是个非常大的JSON,而我们不需要这么多字段,也许我们只需要其中的一个.
那么使用projection来过滤:
db.collection.find(query, projection) 此处projection就是返回值的过滤条件
返回值: 匹配查询条件的文档集合的游标. 如果指定投影参数,查询出的文档返回指定的键 ,”_id”键也可以从集合中移除掉。
_id不指定的话,总是会返回.
1或者true代表返回,0或者false代表不返回
示例:
db.MyFirstCollection.findOne({“title”:”new title”},{“description”:1,”_id”:0});
{ “description” : “this is test” }
也可以使用表达式:
db.MyFirstCollection.findOne({“title”:”new title”},{Items:{“$slice”:[3,1]}});
引用: http://www.cnblogs.com/crazylights/archive/2013/05/08/3068098.html
- mongo的简单操作
- mongo简单操作
- Mongo数据库简单操作(远程)
- mongo的简单用法
- mongo的常用操作
- mongo的常用操作
- mongo数据库的操作
- mongo常用的操作
- mongo的基本操作
- Mongo数据库简单操作 (本地)
- Mongo DB的简单教程
- mongo的常用操作(转载)
- mongo数据库的基本操作
- thinkphp下mongo的操作
- java mongo的基本操作
- java 对 mongo的操作
- 神奇的mongo:JS操作mongo的代码
- mongo 的crud操作&&mongo的数据聚合
- iOS segmentedControl 基本设置
- 前端进阶:透彻掌握 Promise 的使用,读这篇就够了
- Unit8 文档
- Unity游戏设计模式之状态模式实现
- hashCode 以及hashMap排序
- mongo的简单操作
- RSA加密算法(C语言) 小数模拟
- 坐标轴下降法(解决L1正则化不可导的问题)
- 南阳理工 987关于521
- linux系统644、755、777权限详解
- 背景减除法的研究
- 利用ArrayBlockingQueue实现生产者-消费者
- android 加载web view的时候,点击输入框,导致页面放大的问题解决方法
- Delphi编程实现SQL Server挂起清除