mongodb 笔记
1、每次启动需要配置启动文件
mongod --dbpath G:\data\db
执行完上面命令再打开一个新的窗口执行 mongo
也可通过后台参数启动mongo:
./mongod -dbpath /data/mongo/ -logpath /data/mongo/mongo.log -logappend -fork -port 27017
2、show dbs #查看所有数据库
use mydb #使用mydb数据库,没有当前数据库则创建
show collections #查看该数据库下所有的表
3、MongoDB中的查询
db.col.find() #查看col集合下所有的document(document相当于mysql中的row)
db.col.find().pretty() #以格式化的方式来显示所有文档
db.col.find({"by":"菜鸟教程"}) #条件查询相当于sql中 where by = '菜鸟教程'
db.col.find({"likes":{$lt:50}}) # where likes < 50
db.col.find({"likes":{$lte:50}}) #where likes <= 50
db.col.find({"likes":{$gt:50}}) # where likes > 50
db.col.find({"likes":{$gte:50}}) #where likes >= 50
db.col.find({"likes":{$ne:50}}) #where likes != 50
db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}) #WHERE by='菜鸟教程' AND title='MongoDB 教程'
db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}) #WHERE by='菜鸟教程' OR title='MongoDB 教程'
db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}) #where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')
4、MongoDB中的删除
db.col.remove({'title':'MongoDB 教程'}) #移除 title 为 'MongoDB 教程' 的文档
db.col.remove({}) #删除col中的数据
5、两种MongoDB中的插入
db.col.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
document=({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: '菜鸟教程', url: 'http://www.runoob.com', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 });
db.col.insert(document)
6、MongoDB中的更新
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}}) #通过 update() 方法来更新标题(title)
#save() 方法通过传入的文档来替换已有文档
db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Runoob", "url" : "http://www.runoob.com", "tags" : [ "mongodb", "NoSQL" ], "likes" : 110 }) #替换了 _id 为 56064f89ade2f21f36b03136 的文档数据
7、MongoDB中的排序
使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,其中 1 为升序排列,而-1是用于降序排列
db.col.find({},{"title":1,_id:0}).sort({"likes":-1}) #col 集合中的数据按字段 likes 的降序排列
8、MongoDB中的索引
db.col.ensureIndex({"title":1}) #为title字段建立索引,1为升序,2为降序
db.col.ensureIndex({"title":1,"description":-1}) #使用多个字段创建索引(关系型数据库中称作复合索引)
9、MongoDB中的聚合(aggregate)
主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) #集合计算每个作者所写的文章数,$sum计算总和,类似于select by_user as _id, count(*) as num_tutorial from mycol group by by_user