MongoDB安装
- 1、下载安装(http://www.mongodb.org/downloads),安装目录:
c:MongoDB
- 2、在
c:MongoDB
下新建datadb
目录 - 3、命令行运行服务端程序
mongod.exe:
C:>cd C:MongoDBbin
C:MongoDBbin>mongod.exe --dbpath=C:MongoDBdatadb --directoryperdb --logpath=C:MongoDBdatalogs --logappend
- 4、新建命令行,运行客户端程序
mongo.exe
(不要关闭mongod.exe
这个命令行窗口)
MongoDB概念
- databases: 数据库;
- collections:表;(colloections 组成了 databases)
- documents:行;(documents 组成了 collections)
MongoDB 没有新建数据库的命令,只要进行
insert
或其它操作,MongoDB 就会自动帮你建立数据库和collection
。当查询一个不存在的collection
时也不会出错,Mongo 会认为那是一个空的collection
。一个对象被插入到数据库中时,如果它没有 ID,会自动生成一个“
_id
”字段,为12
字节(24位)16
进制数。 当然如果插入文档不带_id,则系统会帮你自动创建一个,如果自己指定了就用自己指定的。
命名
字段名限制:不能以“$”开头;不能包含“.”
;“_id”
是系统保留的字段,但用户可以自己储存唯一性的数据在字段中。
客户端语法:
-
show dbs
// 列出所有数据库 -
use memo
// 使用数据库 memo。即使这个数据库不存在也可以执行,但该数据库不会立刻被新建,要等到执行了insert等的操作时,才会建立这个数据库。 -
show collections
// 列出当前数据库的collections(当前数据库下的表) -
db
// 显示当前数据库 -
show users
// 列出用户 -
db.表名.insert({name:"jack",addr:"fujian"})
;//向表插入字段 -
db.表名.find();
//查询-作用相当于select * from
表名
查询数据
-
$lt
->less then 小于 -
$lte
->less than and equal 不大于
-$lt
->less then 小于
-
$gt
->greater then 大于 -
$gte
->greater then and equal 不小于) -
$ne
->not equal 不等于
db.foo.find() // select * from foo
db.foo.find().limit(10) // select * from foo limit 10
db.foo.find().sort({x:1}) // select * from foo order by x asc 1:升序 -1:降序
db.foo.find().sort({x:1}).skip(5).limit(10) // select * from foo order by x asc limit 5, 10
db.foo.find({x:10}) // select * from foo where x = 10
db.foo.find({x: {$lt:10}}) // select * from foo where x <= 10
db.foo.find({}, {y:true}) // select y from foo
// 一些SQL不能做的,MongoDB也可以做:
db.foo.find({"address.city":"gz"}) // 搜索嵌套文档address中city值为gz的记录
db.foo.find({likes:"math"}) // 搜索数组
db.foo.ensureIndex({"address.city":1}) // 在嵌套文档的字段上建索引
更新数据
db.foo.update({},{})
//更新对象,第一个参数是查询对象,第二个是替代的,可以在第二个对象里指定更新哪些字段,要使用
set"用来指定一个键的值。如果这个键不存在,则创建它,如果存在则更新
db.foo.update({name:"jack"},{$set:{name:"zky"}});
删除记录
db.foo.remove({});/
/第一个参数要删除的记录,只删除匹配的对象
删除数据库表
db.foo.drop();
//删除foo这个表
删除当前数据库
db.dropDatebase();
字段操作
$push
:增加数组元素;
db.foo.update({name:'xxx'},{$push:{age:"10"}});
-
$pop
:减少数组元素; - or,and和
db.people.find({"name":"yhb",$or:[{"age":18},{"age":20}]})
//找出name为yhb,age为18或者20的;
db.people.find({"addr":{$exists:false}})
//找出不存在addr field
db.people.find({$or:[{"name":"yhb","age":18},{"name":"lwy","age":19}]})
// 找出 people 中 name 为 yhb,年龄为 18,或者 name 为 lwy,name 为 19 的
小结
如果是or: ->> {
索引
代码语言:javascript复制db.foo.ensureIndex({productid:1}) // 在productid上建立普通索引
db.foo.ensureIndex({district:1, plate:1}) // 多字段索引
db.foo.ensureIndex({productid:1}, {unique:true}) // 唯一索引
备份与恢复
(1)、备份工具 mongodump;
命令行执行:
代码语言:javascript复制c:MongoDBbinmongodump.exe --help 查看帮助命令
示例-备份数据库:
命令行执行:
代码语言:javascript复制c:MongoDBbinmongodump -o ../data/backup/test (备份数据到backuo/test目录下)
(2)、恢复数据 mongorestore:
示例-恢复数据库:
命令行执行:
代码语言:javascript复制c:MongoDBbinmongorestore -d test -c t002 c:MongoDBdatabackuptestt002.bson
数据 导入& 导出
每次只导入导出一个表,json或csv格式;
(1)、导入 mongoimport
示例:
代码语言:javascript复制mongoimport -d test -c t004 drop c:MongoDBdatabackuptest_t001.json
(2)、导出 mongoexport
示例:
代码语言:javascript复制mongoexport -d test -c t001 -o c:MongoDBdatabackuptest_t001.json
安全与认证
MongoDB本身是没有开启安全性检查的,在开启之前,需要至少一个管理员账号。
开启安全性检查,只有数据库认证用户才能执行读或写的操作。
增加用户
注:V3版本mongoDB已经不再使用addUser,而是采用了db.createUser;
示例:
代码语言:javascript复制use admin
db.createUser(
{
user: "accountUser",
pwd: "password",
roles: [ "readWrite", "dbAdmin" ]
}
)
对用户开启安全认证
1、重启客户端与服务器;
2、然后切换到客户端命令行:
代码语言:javascript复制use admin
db.auth("root","root")
这样,某种权限的用户只有切换到对应的数据库才能执行某些操作。
参考
http://www.open-open.com/lib/view/open1335003001358.html
http://www.runoob.com/mongodb/mongodb-tutorial.html