总结和学习
菜鸟教程
W3Cschool_Mongodb
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
特点:
1.MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
2.MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
3.你可以在MongoDB记录中设置任何属性的索引
4.等等。。。。
概念:
MongoDB术语| 解释
|| primary key primary key 主键,MongoDB自动将_id字段设置为主键
MongoDB的默认数据库为”db”,该数据库存储在data目录中。
use database//切换数据库
db//查看当前数据库
show dbs//查看所有数据库
db.dropDatabase()//删除数据库
还是比较简单的!
很简单的,看看就知道了!!
db.createCollection(name, options)//创建集合
//name: 要创建的集合名称
//options: 可选参数, 指定有关内存大小及索引的选项
//capped boolean true,则创建固定集合。当达到最大值时,它会自动覆盖最早的文档。 false
//autoIndexId boolean 如为 true,自动在 _id 字段创建索引。默认为 false。 false
//size 数值 capped 为 true,此值必须设置,为固定集合指定一个最大值(以字节计)。 false
//max 数值 指定固定集合中包含文档的最大数量。 false
db.name.drop()//删除集合
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
db.name.find();//查看信息
//插入
db.collection_name.insert(document)
db.collection_name.save(document)
db.collection.insertOne()//:向指定集合中插入一条文档数据
db.collection.insertMany()//:向指定集合中插入多条文档数据
db.name.insert({"name":"奇迹"});
//更新
db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>})
//参数
//query : update的查询条件,类似sql update查询内where后面的。
//update : update的对象和一些更新的操作符(如inc…)等,也可以理解为sql update查询内set后面的
//upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
//multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
//writeConcern :可选,抛出异常的级别。
//在3.2版本开始,MongoDB提供以下更新集合文档的方法:
db.collection.updateOne() 向指定集合更新单个文档
db.collection.updateMany() 向指定集合更新多个文档
db.student.update({ "_id" : ObjectId("613ba70dbe7e000052002fc3") },{"$set":{"age":20}});
//替换
db.collection.save(<document>,{writeConcern: <document>})
//参数
//document : 文档数据。
//writeConcern :可选,抛出异常的级别。
use Try1
db.dropDatabase();
db.createCollection(name)
db.name.save({"name":"酒鬼"});//???
//删除--有待学习
db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>})
//参数
//query :(可选)删除的文档的条件。
//justOne : (可选)如果设为 true 或 1,则只删除一个文档。
//writeConcern :(可选)抛出异常的级别。
//remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法
//案例--助于理解
db.students.find()
//{ "_id" : ObjectId("5ad067e7a20b58c6ab35d65f"),
//"name" : "zhangsan",
//"tags" : [ "xuesheng", "banzhang" ] }
//设置数据
db.students.update({name:"zhangsan"},{$set:{sex:2}})
//设置完后查询
//{ "_id" : ObjectId("5ad067e7a20b58c6ab35d65f"),
//"name" : "zhangsan",
//"sex" : 2,
//"tags" : [ "xuesheng", "banzhang" ] }
//示例2–替换文档
//替换
db.students.save(
{"_id": ObjectId("5ad067e7a20b58c6ab35d65f"),
name:"lisi",
desc:"good student",
"tags" : [ "xuesheng", "banzhang" ]})
//替换后
//{ "_id" : ObjectId("5ad067e7a20b58c6ab35d65f"),
//"name" : "lisi",
//"desc" : "good student",
//"tags" : [ "xuesheng", "banzhang" ] }
//
很重要的
//文档查询
db.collection.find(query, projection)
//参数
//query :可选,使用查询操作符指定查询条件
//projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
//
//如果想格式化返回数据,使用如下语法: db.collection.find().pretty()
//
//query 中 键可以为 $or: [{key1: value1}, {key2:value2}] 或者 {:} 或者 {:{$lte:}} ,其中 $lt(小于)、$lte(小于等于)、$gt(大于)、$gte(大于等于) 和 $ne(不等于)
很重要的
//如果你想获取 "col" 集合中 "likes" 大于 100 的数据,你可以使用以下命令:
db.col.find({likes : {$gt : 100}})
//类似于SQL语句:
Select * from col where likes > 100;
//如果你想获取"col"集合中 "likes" 大于100,小于 200 的数据,你可以使用以下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
//类似于SQL语句:
Select * from col where likes>100 AND likes<200;
//其他的类似
//MongoDB 操作符 - $type 实例
//如果想获取 "col" 集合中 title 为 String 的数据,你可以使用以下命令:
db.col.find({"title" : {$type : 'string'}})
很重要的
db.COLLECTION_NAME.find().limit(NUMBER)
db.COLLECTION_NAME.find().limit(4).skip(3)
//mongodb 中有4条数据,如果只需要后1条,skip()方法默认参数为 0 .
db.COLLECTION_NAME.find().sort({KEY:1})
//KEY为指定字段,1 为升序排列,-1是降序排列
//1、查看集合索引
db.col.getIndexes()
//2、查看集合索引大小
db.col.totalIndexSize()
//3、删除集合所有索引
db.col.dropIndexes()
//4、删除集合指定索引
db.col.dropIndex("索引名称")
>db.collection.createIndex(keys, options)
//语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
>db.col.createIndex({"title":1})
//createIndex() 方法中你也可以设置使用多个字段创建索引(关系型数据库中称作复合索引)。
>db.col.createIndex({"title":1,"description":-1})
很重要的
这里我们介绍一下聚合框架中常用的几个操作:
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
//1.project实例
db.article.aggregate(
{ $project : {
_id : 0 ,
title : 1 ,
author : 1
}});
//2.$match实例
db.articles.aggregate( [
{ $match : { score : { $gt : 70, $lte : 90 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );
//$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
//3.$skip实例
db.article.aggregate(
{ $skip : 5 });
//经过$skip管道操作符处理后,前五个文档被"过滤"掉。
为了熟悉了,最近在上python的爬虫课,连接数据库,可是很重要的,于是乎加紧时间补了补。