时间:2021-07-01 10:21:17 帮助过:2人阅读
table === collection
row ==== document
?
查看资料:http://www.runoob.com/mongodb/mongodb-tutorial.html
官网:www.mongodb.org
中文手册:http://www.runoob.com/mongodb/mongodb-tutorial.html
中文社区:http://www.mongoing.com/
http://www.open-open.com/
http://www.infoq.com.cn
?
????
a. 一般都软件放在放在/usr/local/NAME 下
b. 创建软连接
c. 简单命令:
?
d. 启动MongoDB服务:
# ./mongodb --help
创建mongodb的数据文件夹
3. 启动服务
4. 显示效果:
注意:使用上面的命令启动mongodb后,这个时候mongodb服务会占据该窗口,如果要关闭该窗口,ctrl+c 即可关闭该窗口
?
5. 客户端连接:
?
?
# ./bin/mongod --dbpath /data/db --logpath /data/db/log.txt --fork --port 27017
参数解释:
--dbpath 数据存储目录
--logpath 日志存储目录(加上日志的名称)
--port 运行端口(默认27017)
--fork 后台进程运行
?
问题:MySQL下在命令行下如何查看当前正在使用的数据库?
答:
# select database();
?
答:MongoDB可以隐式的创建,直接use NAME 可以创建一个数据库
?
注意:即使数据不存在,也可以直接切换,会自己创建。但是如果在数据库中不创建collection是不会显示的。
?
mongoDB的库是隐式创建,当use 一个不存在的库的时候,然后在该库下创建tables(collection)后即可创建数据库
注意:在使用命令行的时候,可以使用tab 快速的补齐
?
db.createCollection(‘collectionName‘) 创建表
?
?
db.collectionName.insert(document) 向一个不存在的表里在插入数据的时候,隐式的创建表
?
show tables 查看当前数据库下的表(collection)
show collections 也可以查看当前数据库下的表(collection)
?
db.collectionName.drop() 删除表
db.dropDatabase() 删除数据库
1. find() 查找 # select * from tableName;
注意:mongoDB会自动帮我们维持一个主键ID(_id)不需要也不建议手工的修改
主键:1. 约束唯一 2. 快速查找
# db.CollectioNAME.find()
注意:
?
# db.collectionName.isnert(document) 注意 这里的document 是一个 json对象
例如:
单条记录:
# db.collectionName.insert({_id:5, age:18, name:‘asion‘});
多条记录
# db.collectionName.insert(
[
{date:‘2014-12-12‘, study:‘mongodb‘},
{_id:9, gender:‘male‘, name:‘caoyang‘}
]
)
?
# db.collection.remove(查询表达式, 选项);
# delete from tableName where id > 1 limit 1;(查询表达式,)
选项是指 {justOne:true/false},是否只删一行, 默认为false
?
注意
1: 查询表达式依然是个json对象
2: 查询表达式匹配的行,将被删掉
3: 如果不写查询表达式,tables中的所有文档将被删掉
?
例1: db.students.remove({sn:‘001‘});
删除students表中 sn属性值为‘001‘的数据
?
?
例2: db.students.remove({gender:‘m‘},{justOne:true});
删除students表中gender属性为m的文档,只删除1行
?
# db.collection.update(查询表达式, 新值)
# udpate tableName set name = ‘asion‘ where id = 1;
?
注意
修改什么? ---> 查询表达式指定
改成什么样? --> 新值 或 赋值表达式
?
例如:
# db.news.update({name:‘asion‘},{name:‘caoyang‘});
是指选中news表中,name值为qq的数据,并把其文档值改为{name:‘caoyang‘}
结果: 文档中的其他列不见了,改后只有_id和name列数据
注意-->新值直接替换了旧值,而不是修改,那我们设置的值做了一个全部的替换
?
?
所以:如果是想修改数据的某列,可以用$set关键字
# db.collectionName.update({name:‘asion‘}, {$set:{name:‘caoyang‘}})
?
注意:只想修改document里面的某一个信息
?
?
# db.collection.find(查询表达式, 显示的列);
# db.collections.find(查询表达式, {列1:1,列2:1});
?
例1:db.students.find(查询表达式, 显示的信息)
查询students所有数据
?
例2: db.students.find({},{gender:1})
{} 取出所有
查询所有文档数据,但是只显示gender列数据 (_id属性默认总是查出来)
# select gender from tableName;
?
例3: db.students.find({},{gender:1, _id:0})
查询所有文档数据,但是只显示gender列信息,且不显示_id列信息
?
例4: db.students.find({gender:‘male‘}, {name:1, _id:0});
查询所有gender值为male的数据,但是只显示name这列信息
?
学习文章:http://www.fkblog.org/blog569
下载地址:http://pecl.php.net/package/mongo
a. 点击对应的【dll】
b. 选择合适的php版本,这个时候需要注意的是,选择版本的时候,存在php线程安全选择。
注意:线程安全信息如何查看?
答:可以去php软件包,查找如下信息
c. 将下在dll文件放置到php的ext目录
d. 修改php.ini文件
e. 一定要重启Apache
f. 建立一个phpinfo() 测试函数即可
?
Linux下安装
解压
?
?
将一个非常长的URL地址转换为一个比较短的URL地址。主要为了用户的一个体验,因为短的信息美观一些。
一般在微博里面最常见。
体验地址:
http://dwz.wailian.work/
效果:
实现技术点:
?
思路:
????1. 短网址必须唯一,一一对应。可以参考MySQL的主键ID,即可以自增,也可以唯一
????2. 网址必须短,但是需要存储的信息多。这个时候可以使用进制实现
http://t.cn/h51HY h51HY(尽可能让它短一些,但是需要存储的数据要多)
?
????????二进制 111111 2^6
????????八进制 777777 8^6
????????十六进制 FFFFFF F 16^6
六十二进制 62^6
500多亿
????3. 短网址尽量乱,无规律。防止发现规律后批量请求。
?
?
?
?
?
?
?
?
?
?
mongoDB 学习
标签: