mongoDB 使用学习笔记
1、安装mongoDB
下载安装mongoDB,并且在所安装的直接根目录下,新建一个文件夹,data/db
假设安装在e盘,进入mongoDB的安装/bin目录下,打开命令
mongod --dbpath e:\data
2、打开mongo.exe执行命令
(1)查看数据库: use.dbs
(2)创建数据库: use mydb
PS:刚创建的数据库,使用命令行查看数据库的时候是看不到新建的数据库的,如果要显示他,那就需要向我们新创建的数据库添加数据。MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中
(3)删除数据库:
首先,切换到要删除的数据库里面:use mydb
然后,db.dropDatabase()
(4)插入数据: db.mydb.insert({'username': 'admin','password': 123})
(5)查看数据:
<1>查看所有数据: db.mydb.find() 或者是 db.mydb.find().pretty()
这两者的差别是显示格式的区别
<2>根据条件查看数据(end条件): db.mydb.find({'username':'admin'}) 【条件可以多个】
<3>$or条件
db.mydb.find($or:{'username':'admin'})
<4>db.mydb.find({},{'username':1,_id:0})
第一个 {} 放 where 条件,为空表示返回集合中所有文档。
第二个 {} 指定那些列显示和不显示 (0表示不显示 1表示显示)。
(6)更新数据:
<1>只更新找到的第一条
db.mydb.update({'username':'admin'},{$set:{'username':'peoson1'}})
<2>更新找到的所有
db.mydb.update({'username':'admin'},{$set:{'username':'peoson1'}},{multi:true})
或者
db.mydb.update({'username':'admin'},{$set:{'username':'peoson1'}},false,true)
<3>根据条件查找,更新
(7)删除数据:
<1>删除找到的记录
db.mydb.remove({'username':'pserson1'})
<2>只删除找到的第一条记录
db.mydb.remove({'username':'pserson1'},1)
<3>删除所有数据
db.mydb.remove({})
(8)$type操作符
使用:
db.mydb.find({'usernmae':{$type:2}})
(9)限制读取的记录条数:limit(num)方法
(10)跳过指定数量的数据,skip(num) ,默认num=0
db.mydb.find().skip(10).limit(12): 跳过前10条,返回12条数据,skip和limit结合就能实现分页
(11)排序:sort()
db.mydb.find().sort({KEY:1}),其中,KEY设置为1为升序,设置成-1为降序,默认为1即升序
(12)索引:ensureIndex()
db.mydb.ensureIndex({KEY:1, ...}),其中,KEY设置为1为升序索引,设置成-1为降序索引,默认为1即升序
并且通过在创建索引时加background:true 的选项,让创建工作在后台执行
db.values.ensureIndex({KEY:1, ...}, {background: true})
(13)聚合: aggregate()
<1>db.mydb.aggregate([{$group: {_id: ‘$username’, num: {$sum: 1}}}])
上面这条查询的是字段username字段对数据进行分组,并计算username字段相同值的总和。
表达式:
$sum(总和)、$avg(平均值)、$min(最小值)、$max(最大值)、$push(在结果文档中,插入只到一个数组中)、$addToSet(在结果文档中插入值到一个数组中,但不创建副本)、$first(根据资源文档的排序获取第一个文档数据)、$last(根据资源文档的排序获取最后一个文档数据)
<2>管道:
-
-
- $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
- $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
- $limit:用来限制MongoDB聚合管道返回的文档数。
- $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
- $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
- $group:将集合中的文档分组,可用于统计结果。
- $sort:将输入文档排序后输出。
- $geoNear:输出接近某一地理位置的有序文档。
-
(14)node.js和mongodb
<1>在app.js中设置
<2>查询