mongoDB
一、安装前准备
1. 下载与本机对应位数的MongoDB软件
2. 运行安装程序,选择自定义安装,目录不要带中文和空格,点下一步就好。(如:MongoDB根目录 E:\install\MongoDB)
3. 创建MongoDB数据和日志目录,MongoDB将数据目录存储在 db 目录下,但是这个数据目录不会主动创建。
请注意,数据目录应该放在根目录下。
根目录下创建mongoDBData,其下新建db和log文件夹,log下新建mongodb.log文件。
4. 运行MongoDB服务器,必须进入到\bin目录执行:
mongod.exe --dbpath E:\install\MongoDB\mongoDBdata\db
如果执行成功,会输出一大串信息
5. 将MongoDB服务器作为Windows服务运行(下面命令必须是管理员权限的cmd窗口,进入\bin目录执行)
mongod.exe --bind_ip 127.0.0.1 --logpath "E:\install\MongoDB\mongoDBdata\log\mongodb.log" --logappend --dbpath "E:\install\MongoDB\mongoDBdata\db" --port 27017 --serviceName "mongoDB" --serviceDisplayName "mongoDBDisplay" --install
6. 进入MongoDB自带编译环境,进入\bin目录,执行mongo.exe,开始自动连接到MongoDB
二、mongoDB基本概念
1. 文档:是一组键值(key-value)对(即 BSON) ,文档不需要设置相同的字段, 并且相同的字段不需要相同的数据类型 。
{"site":"www.baidu.com", "name":"百度", "age":16}
i. 文档中的键/值对是有序的。
ii. 文档中的值不仅可以是在双引号里面的字符串, 还可以是其他几种数据类型(甚至可以是整个嵌入的文 档)。
iii. MongoDB 区分类型和大小写。
iv. MongoDB 的文档不能有重复的键。
v. 文档的键是字符串。 除了少数例外情况, 键可以使用任意 UTF-8 字符。
2. 集合: 集合就是 MongoDB 文档组, 类似于 RDBMS的表格。
集合的命名规则:
i. 不能为空字符串""
ii. 不能有\0字符(空字符),这个字符表示集合名的结尾
iii. 不能以"system."开头,为系统保留前缀
iv. 不能含有保留字符,如$
3. 常用几种数据类型
三、基本noSql命令
1. 添加文档,insert() / save() 方法, db.COLLECTION_NAME.insert(document)
db.course.insert({title:"mongodb教程",desc:"nosql数据库"}))
2. 查找文档
db.course.find()
3. 插入文档的另一种方法
> document=({title:"mongodb教程",desc:"nosql数据库"})
{ "title" : "mongodb教程", "desc" : "nosql数据库" }
> db.course.insert(document)
WriteResult({ "nInserted" : 1 })
4. 更新文档
语法:db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
})
参数说明:
> db.course.update({'title':'mongodb教程'},{$set:{'title':'Nosql教程'}})) //只会修改第一条找到的
> db.course.update({'title':'mongodb教程'},{$set:{'title':'Nosql教程'}},{multi:true}) //修改所有
5. 删除文档(remove)
remove前先执行find()命令来判断执行的条件是否正确是一个好的习惯。
语法:db.collection.remove(<query>,{
justOne: <boolean>,
writeConcern: <document>
})
> db.course.find()
{ "_id" : ObjectId("5ae447db75412046fb99ba8d"), "title" : "Nosql教程", "desc" : "nosql数据库" }
{ "_id" : ObjectId("5ae448b975412046fb99ba8e"), "title" : "Nosql教程", "desc" : "nosql数据库" }
{ "_id" : ObjectId("5ae6cd5275412046fb99ba8f"), "title" : "Hello", "desc" : "helloworld" }
{ "_id" : ObjectId("5ae6cd8675412046fb99ba90"), "title" : "Hello", "desc" : "helloworld" }
{ "_id" : ObjectId("5ae6cd9375412046fb99ba91"), "title" : "Hello", "desc" : "helloworld" }
> db.course.remove({title:'Hello'}, {justOne: true})
WriteResult({ "nRemoved" : 1 })
> db.course.find()
{ "_id" : ObjectId("5ae447db75412046fb99ba8d"), "title" : "Nosql教程", "desc" : "nosql数据库" }
{ "_id" : ObjectId("5ae448b975412046fb99ba8e"), "title" : "Nosql教程", "desc" : "nosql数据库" }
{ "_id" : ObjectId("5ae6cd8675412046fb99ba90"), "title" : "Hello", "desc" : "helloworld" }
{ "_id" : ObjectId("5ae6cd9375412046fb99ba91"), "title" : "Hello", "desc" : "helloworld" }
> db.course.remove({title:'Hello'})
WriteResult({ "nRemoved" : 2 })
> db.course.find()
{ "_id" : ObjectId("5ae447db75412046fb99ba8d"), "title" : "Nosql教程", "desc" : "nosql数据库" }
{ "_id" : ObjectId("5ae448b975412046fb99ba8e"), "title" : "Nosql教程", "desc" : "nosql数据库" }
6. 条件查询
a) query : 可选, 使用查询操作符指定查询条件
b) projection : 可选, 使用投影操作符指定返回的键。 查询时返回文档中所有键值, 只需省略该
参数即可(默认省略) 。
4. 大于 {<key>: {$gt:<value>}}
5. 大于等于 {<key>: {$gte:<value>}}
6. 不等于 {<key>: {$ne:<value>}}