Mongodb常见命令
MySQL是关系型数据库 ,mongodb是非关系型数据库,是分布式文件存储的数据库用c++编写的,性能很好。Mongodb的查询语言非常强大,可以建立索引。
以下是自己在学习中总结的一些常见的命令,希望对大家有帮助!
命令 | 含义 | 备注 |
---|---|---|
use database_name | 创建数据库 | 如果数据库存在,use相当于切换数据库。如果不存在,则相当于创建一个新的数据库,且如果没有插入内容,则不会显示在数据库中,插入内容后方可显示 |
show dbs | 查看当前的所有数据库 | |
db | 查看当前执行的数据库 | |
db.items.insert({“key”:‘value’}) | 插入数据文档内容 | 创建的新的数据库(newDb)不再列表中,要显示数据库,需要至少插入一个文档,空的数据库是显示不出来的 |
db.dropDatabase() | 删除数据库 | 删除现有的数据库 |
db.createCollection(name,options) | 创建mongodb里面的集合 | name----string-----要创建数据库的名称 options-----Document-----可选,指定有关内存大小和索引选项 |
show collections | 显示当前数据库中所有集合 | |
db.collection_name.drop() | 删除集合 | 如果删除成功----true 删除失败-----false |
db.collection_name.insert(内容插入) | 插入文档 | eg:db.mycol.insert({_id:100,title:‘mongodb overview’,description:‘mongodb is no sql database’,url:‘http://www.baidu.com’,tags:[‘mongodb’,‘database’,‘nosql’],likes:100,}) |
db.post.save(document) | 插入文档 | |
insertone() | 可以插入单个文本 | 版本至少在3.2 |
insertmany() | 可以插入多个文本 | 版本至少在3.2 |
db.collection_name.find() | 查询的是一个非结构化显示的所有的文档 | |
db.collection_name.find().pretty() | 将格式化显示查询的数据 | |
findone() | 只返回一个文档 | |
db.mycol.find(过滤的规则) | 过滤 | |
db.mycol,find({$and:[{key1:value1},{key2:value2}…]}) | and操作符 | db.mycol.find({$and:[{‘by’:‘yiibai tutorials’},{‘title’:‘NoSQL Database’}]}) .pretty() |
db.mycol,find({$or:[{key1:value1},{key2:value2}…] }) | or操作 | db.mycol.find({$or:[{‘by’:‘yiibai tutorials’},{‘title’:‘NoSQL Database’}]}) .pretty() |
db.mycol.find({‘likes’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:10}̲,or:[{‘by’:‘yiibai tutorials’},{‘title’:‘NoSQL Database’}]}).pretty() | and和or条件一起使用 | |
db.collection_name.update(criteria,update_data) | 更新 | db.mycol.update({‘by’:‘yiibai tutorials’},{$set:{‘by’:‘new pdate mongodb overview’}}) |
db.collection_name.remove() | 删除文档 | |
db.collecton_name.find({},{key:1}) | 投影(查询时查询某一个字段) | |
db.collection_name.find().limit(number) | 限制筛选记录 | |
db.collection_name.find().limit(number).skip(number) | 跳过文档数量进行筛选 | |
db.collection_name.find().sort(key:1) | 对查询的结果进行排序 | 1 升序 -1 降序 |
db.collcation.aggragate(options) options---->$group:{_id} | 分组和聚合函数查询 |
过滤规则
操作 | 语法 | 示例 | RDBMS等效语句 |
---|---|---|---|
等于 | {:} | db.mycol.find({‘by’:‘yiibai tutorials’}).pretty() | where by=‘laowang’ |
小于 | {:{$lt:}} | db.mycol.find({‘likes’:{<:50}}).pretty() | where likes < 50 |
小于等于 | {:{$lte:}} | db.mycol.find({‘likes’:{<e:50}}).pretty() | where likes <= 50 |
大于 | {:{$gt:}} | db.mycol.find({‘likes’:{$gt:50}}).pretty() | where likes > 50 |
大于等于 | {:{$gte:}} | db.mycol.find({‘likes’:{>e:50}}).pretty() | where likes >= 50 |
不等于 | {:{$ne:}} | db.mycol.find({‘likes’:{&ne:50}}).pretty() | where likes != 50 |
查询嵌套
db.hello.find({size:{w:21,h:14,uom:‘cm’}}) | 查所有 |
---|---|
db.hello.find({‘size.h’:14}) | 查单个 |
db.hello.find({‘size.h’:{$lt:16}}) | 根据范围匹配 |
db.hello.find({‘size.h’:{$lt:15},‘size.uom’:‘cm’,status:‘A’}) | 根据逻辑匹配 |
聚合函数
表达式 | 描述 | 示例 |
---|---|---|
$sum | 从文档中求所有定义的值 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:'by_user’,num_tutorial:{ s u m : ′ sum:' sum:′likes’}}}]) |
$avg | 计算集合中所有文档的所有给定值的平均值。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:'by_user’,num_tutorial:{ a v g : ′ avg:' avg:′likes’}}}]) |
$min | 从集合中的所有文档获取相应值的最小值。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:'by_user’,num_tutorial:{ m i n : ′ min:' min:′likes’}}}]) |
$max | 从集合中的所有文档获取相应值的最大值。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:'by_user’,num_tutorial:{ m a x : ′ max:' max:′likes’}}}]) |
$first | 根据分组从源文档获取第一个文档。 通常情况下,这只适用于以前应用的“$sort ”阶段。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:'by_user’,num_tutorial:{ f i r s t : ′ first:' first:′likes’}}}]) |
$last | 根据分组从源文档获取最后一个文档。通常情况下,这只适用于以前应用的“$sort ”阶段。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:'by_user’,num_tutorial:{ l a s t : ′ last:' last:′likes’}}}]) |
$push | 将值插入到生成的文档中的数组中。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : { p u s h : " push: " push:"url"}}}]) |
$addToSet | 将值插入生成的文档中的数组,但不会创建重复项。 | db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : { a d d T o S e t : " addToSet : " addToSet:"url"}}}]) |