MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
创建数据库
use articledb
创建集合
db.createCollection("my")
查询集合
show collections
删除集合
db.集合.drop()
db.my.drop()
- db.comment.insert({
- "articleid":"10000","content":"今天天气真好啊,阳光明媚","userid":"1001",
- "nickename":"rose","createdatetime":new Date(),
- "likenum":NumberInt(10),"state":null
- })
db.comment.find()
- db.comment.insertMany([{
- "articleid":"10001","content":"今天大雾,雾蒙蒙的","userid":"1002",
- "nickename":"rose","createdatetime":new Date(),
- "likenum":NumberInt(10),"state":null
- },{
- "articleid":"10002","content":"今天天气真冷,冻死宝宝了","userid":"1003",
- "nickename":"rose","createdatetime":new Date(),
- "likenum":NumberInt(10),"state":null
- }])
db.coment.find(),通过查询方法里面放入json格式的参数,进行条件查询,比如查询userid为1003的评论
db.comment.find({"userid":"1003"})
5.投影查询 ,如果只需要查出表部分字段
db.comment.find({"userid":"1003"},{userid:1,nickename:1,_id:0})
文档的更新语法 db.collection.update(query,update,options)
覆盖的修改
db.comment.update({userid:"1001"},{likenum:NumberInt(100)})
执行后我们发现,这条文档除了likenum这个字段,其他的都不见了
局部修改
为了解决这个问题。我们需要使用修改器$set
db.comment.update({userid:"1002"},{$set:{likenum:NumberInt(100)}})
文档的删除语法
db.集合名称.remove(条件)
db.comment.remove({_id:ObjectId("6311b7305e41940620ddd71d")});
查询总数
db.comment.count({userid:"1002"})
分页查询,mongdb提供一个skip()
db.comment.find().limit(2).skip(3);
sort()方法对数据进行排序,sort方法,可以通过参数指定排序的字段,并使用1和-1指定升序和降序
db.comment.find().sort({likenum:-1})
比较查询
< ,<= ,>,>= 这些操作符也是很常用
db.集合名称.find({"field":{ $gt:value}}) //大于:field>value
db.集合名称.find({"field":{ $lt:value}}) //小于:field db.集合名称.find({"field":{ $gte:value}}) //大于等于:field>=value db.集合名称.find({"field":{ $lte:value}}) //小于:field<=value db.集合名称.find({"field":{ $lte:value}}) //不等于:field !=value 例如查询评论数大于10的记录 包含查询$in操作符 索引可以提升查询的效率,mongodb支持单字段的索引和复合索引 db.collection.getIndexes() v 表示字段的版本号码 1.在集合上创建索引 语法 db.collection.createIndex(keys,options) 2.复合索引:对于userid和nickname 同时建立符合(Compound)索引 db.comment.createIndex({userid:1,nickname:-1}) db.comment.dropIndex({userid:1}) db.comment.find({userid:"1003"}).explain() 从winningplan的stage为FETCH 就表示命中的索引db.comment.find({likenum:{$gt:NumberInt(10)}})
db.comment.find({userid:{$in:["1001","1002","1003"]}})
索引的使用
1.查看索引
创建索引
db.comment.createIndex({userid:1})
索引的移除
查看执行计划 调用explain()