MongoDB step by step (二)mongodb 与SQL基本对比


SQL Terms/Concepts


MongoDB Terms/Concepts


database


database


table


Collection(集合)


row


document(文档)


column


Key(键)


Value


Value(值)


index


index


table joins


embedded documents and linking


primary key


primary key


Specify any unique column or column combination as primary key.


In MongoDB, the primary key is automatically set to the _id field.


aggregation (e.g. group by)


aggregation pipeline


Help


查看帮助(mongodb 中注意大小写)


db.help()


help on db methods


db.mycoll.help()


help on collection methods


sh.help()


sharding helpers


rs.help()


replica set helpers


help admin


administrative help


help connect


connecting to a db help


help keys


key shortcuts


help misc


misc things to know


help mr


mapreduce


show dbs


show database names


show collections


show collections in current database


show users


show users in current database


show profile


show most recent system.profile entries with time >= 1ms


show logs


show the accessible logger names


show log [name]


prints out the last segment of log in memory, ‘global‘ is default


use <db_name>


set current database


db.foo.find()


list objects in collection foo


db.foo.find( { a : 1 } )


list objects in foo where a == 1


it


result of the last line evaluated; use to further iterate


DBQuery.shellBatchSize = x


set default number of items to display on shell


exit


quit the mongo shell


数据库


show dbs


查看所有数据库


use mydb


设置为当前数据库


db


查看当前数据库名称


db.createCollection("tab")

db.tab.insert({"id":1})


创建数据库(创建collection)

创建数据库(插入数据也会被创建)


db.copyDatabase("mydb", "newmydb", "127.0.0.1")


复制为另一个新的数据库


db.dropDatabase()


删除数据库


Collection定义操作(集合必须以字母或下划线开头)


db.createCollection("tab",{size:1024,max:1000,capped:true})

db.tab.insert({"id":1})


创建collections 并做限制(如创建“tab”)

(插入数据也会创建collections)


show collections


查看当前数据库所有collections


db.tab.drop()


删除collections


db.tab.update({},{$rename:{"name":"newname"}},false,true)


更改所有行的字段名name为newname


db.getCollection(‘tab‘).renameCollection(‘newtab‘)

db.newtab.renameCollection(‘tab‘)


更改collection名称


Collection 数据操作


db.tab.save({"id":2})

db.tab.insert({"id":3})

db.tab.insert([{ size: "S", qty: 25 }, { size: "M", qty: 50 }])

db.tab.insert({ array :[{ size: "S", qty: 25 }, { size: "M", qty: 50 } ]})


插入数据到collections

(会自动生成唯一列 “_id”)

插入多行(相当: insert into tab values(“S”,1), (“M”,50))

字段中插入子集


db.tab.update({"id":1},{$set:{"id":5}})


更改数据(id值由1更改为5)


db.tab.update({ id:2},{id:6, name:‘E‘})


将id=2的行更新为新的行


db.tab.update({"id":1},{$unset:{ name:‘120‘}})


删除一个键值对(删除id=2中的字段name)


db.tab.update({"id":1},{$push:{ name:‘C‘}})


往id=1的行 字段为name数组中插入元素’C’


db.tab.update({"id":1},{$pull:{ name:‘C‘}})


从id=1的行 字段为name数组中删除所有元素’C’


db.tab.remove({"id":3})

db.tab.remove({"id":3},1)

db.tab.remove({})


删除id=3的所有记录

删除id=3的第一条记录

删除所有记录


Collection查询数据操作


Select * from tab


db.tab.find()

db.tab.find({})


Select id from tab


db.tab.find({},{"id":1})   #({条件},{字段:0/1})

db.tab.find({},{"_id":0,"id":1})

db.tab.aggregate({ $project : {id : 1 }});

db.tab.find({id:{$exists:1}});


Select * from tab where id=1


db.tab.find( { id :1})


Select id from tab where id=1


db.tab.find({id :1},{"_id":0,"id":1})


Select * from tab where id<>1


db.tab.find({id:{$ne:1}})


Select * from tab where id>2


db.tab.find( { id: { $gt: 2} } )


Select * from tab where id<3


db.tab.find( { id: { $lt: 3} } )


Select * from tab where id>=2


db.tab.find( { id: { $gte: 2 } } )


Select * from tab where id<=3


db.tab.find( { id: { $lte: 3} } )


Select * from tab where id = 1 or id = 2


db.tab.find({$or:[{id:3},{id:2}]})


Select * from tab where id < 2 or id >4


db.tab.find({$or:[{id:{$gt:4}},{id:{$lt:2}}]})


Select * from tab where id in (1,2)


db.tab.find( { id: { $in: [ 1, 2 ] } } )


Select * from tab where id not in (2,3)


db.tab.find({id:{"$nin":[2,3]}})


Select * from tab where id between 2 and 3

Select * from tab where id >= 2 and id <= 3


db.tab.find({$and:[{id:{$gte:2}},{id:{$lte:5}}]})


Select * from tab where id = 1 and name = ‘kk’


db.tab.find({id:2, name:‘kk‘})


Select distinct id from tab


db.tab.distinct("id");

db.runCommand ( { distinct: "tab", key: "id" } )


Select distinct id from tab where name = ‘A’


db.runCommand({distinct:‘tab‘,key:‘id‘,query:{name:‘A‘}})


Select * from tab where name like ‘%A%’


db.tab.find({ name:{$regex:"A"}})

db.tab.find({ name:/A/})


Select * from tab order by id asc


db.tab.find().sort({id:1})


Select * from tab order by id desc


db.tab.find().sort({id:-1})


Select  top 5 * from tab


db.tab.find().limit(5)


跳过前m条记


db.tab.find().skip(2)

db.tab.aggregate({ $skip : 2 });


跳过前m条记录,从m+1开始取n条


db.tab.find().skip(2).limit(3)


除了指定的列,其他列都显示


db.tab.find({id:null})

db.tab.find({},{"_id":0})


查找字段id为string类型的行(参考下表格)


db.tab.find({ id: {$type: 2}});


select name,sum(id) as sumid

from tab

where id >0 group by name


db.tab.group({

key:{ "name":true}  # group by name

,cond:{id:{ $gt:0}}   # where id >0

,reduce:function(obj,prev) #聚合函数

{ prev.sumid += obj.id; } #函数逻辑,累加id

, initial: {sumid: 0 }})  #初始化


Select sum(*) from tab


db.tab.group({key:{},cond:{}

,reduce:function(obj,prev)

{ prev.sumid += obj.id; },initial: {sumid: 0 }});


Select sum(*) as newcol from tab


db.tab.aggregate([{$group:{_id:"$by_user",newcol:{$sum:"$id"}}}])


Select count(*) from tab


db.tab.count()  或者 db.tab.find().count()


Select count(*) from tab


db.tab.group({key:{},cond:{},

reduce:function(obj,prev)

{ prev.sumid += 1; },initial: {sumid: 0 }});


Select avg(*) from tab


db.tab.aggregate([{$group:{_id:"$by_user",newcol:{$avg:"$id"}}}])


Select max(*) from tab


db.tab.find().sort({id:-1}).limit(1)

db.tab.aggregate([{$group:{_id:"$by_user",newcol:{$max:"$id"}}}])


Select min(*) from tab


db.tab.find().sort({id:1}).limit(1)

db.tab.aggregate([{$group:{_id:"$by_user",newcol:{$min:"$id"}}}])


#元素查询

#db.tab.insert({ratings: [ 5, 8, 9 ] })

db.tab.find({ ratings: [ 5, 8, 9 ] } )   #查找匹配的数组

db.tab.find({ ratings: 5 })     #查找元素中含“5”的记录

db.tab.find({ ratings:{$elemMatch:{$gt:8,$lt:10}}})   #元素匹配查找

#内嵌文档

#db.tab.insert({producer:{company: ‘ABC‘,address: ‘Street‘}})

#db.tab.insert({producer:[{ company: ‘ABC‘,address: ‘Street‘},{ company: ‘KK‘,address: ‘Street2‘}] })

db.tab.find({producer:{company: ‘ABC‘,address: ‘Street‘}})

db.tab.find({‘producer.company‘: ‘ABC‘})

db.tab.find( { ‘producer.0.address‘: ‘Street‘} )  #字段‘producer的第一个元素的address=’ Street’


类型描述


类型值


Double


1


String


2


Object


3


Array


4


Binary data


5


Object id


7


Boolean


8


Date


9


Null


10


Regular expression


11


JavaScript code


13


Symbol


14


JavaScript code with scope


15


32-bit integer


16


Timestamp


17


64-bit integer


18


Min key


255


Max key


127

时间: 2024-11-09 16:28:26

MongoDB step by step (二)mongodb 与SQL基本对比的相关文章

MongoDB sharding cluster Step by Step

本篇讲述MongoDB的 Sharding Cluster 的详细步骤,按着做理论上不会有什么错误. 关于说着里边的参数.变量.和设置,没有用到很多,只用到了关键的一些,其他的可以参考MongoDB的官方文档. 后者自己google,baidu,这里不想多讲.同样废话不多说,直接上菜. 哦,对了Sharding Cluster里边一定要弄明白的三个概念, DataNode, ConfigServer, Router.如图: 好了, 配置正式开始: 1, 配置Shard Data Node, 即我

MongoDB step by step (一)Windows XP 32位安装mongodb及其目录结构和配置

MongoDB是一个提供高性能.高可用性.和自动伸缩的开源的文档数据库. MongoDB 是由 c++语言编写. 文档数据库(DocumentDatabase): 记录在MongoDB中称之为文档,它是列值成对的数据结构组件.MongoDB文档类似于JSON对象(呵呵,本人还不了解).列值可能包括其他文档.数组.或者文档中的数组.   更多有点和特征参考 Introductionto MongoDB:http://docs.mongodb.org/manual/core/introduction

MongoDB学习总结(二)

前言:学习札记! MongoDB学习总结(二) 1.  安装.初识 之前写过一篇MongoDB的快速上手文章,里边详细的讲了如何安装.启动MongoDB,这里就不再累述安装过程,简单介绍一下Mongodb的基本操作. 打开命令行窗口,输入“mongo”命令,默认会连接到test数据库. l  Insert db.person.insert({"name":"Olive","age":18}) db.person.insert({"nam

SQL Server 维护计划实现数据库备份(Step by Step)(转)

SQL Server 维护计划实现数据库备份(Step by Step) 一.前言 SQL Server 备份和还原全攻略,里面包括了通过SSMS操作还原各种备份文件的图形指导,SQL Server 数据库最小宕机迁移方案,里面使用SQL脚本(T-SQL)完成完全备份.差异备份.完全还原.差异还原等:        有了上面的基础,我们加入了数据库的备份元素,通过维护计划来生成数据库的备份文件,这包括两种文件,数据库的完全备份与差异备份,有了这两个文件,我们可以通过SQL Server 备份和还

MongoDB 学习笔记(二) 高级查询

1.条件运算符 2.$all 匹配所有 3.$exists 判断字段是否存在 4.NUll 值处理 5.$mod 取模处理 6.$ne 不等于 7. $in 包含,与sql用法相同 8. $nin 不包含,与sql用法相同 9.$size 数组个数 10.正则表达式 11.$where 查询 12.javascript 查询 13.Count.skip. limit 14.sort 排序 15.游标 16.存储过程 javascript 写法 MongoDB 学习笔记(二) 高级查询

.NET下对MongoDB进行操作(二)

这次说下关于利用C#driver,对mongoDB进行简单的查询. 我们可以利用Query类中的静态方法来创建一系列query,达到查询的目的. Query在using MongoDB.Driver.Builders这一名称空间中. 1. 单一条件查询,可以参考如下代码: var query = Query.EQ("ColName", "Value"); foreach (BsonDocument doc in collection.Find(query)) { D

MongoDB 学习笔记(二) 之查询

最简单的查询 个人认为mongoDB是面向对象的吧. 例如最简单的查询  整个数据集只有三条数据 第一查询姓名为张三的  数据 查询的条件比较好写 随意   db.collection.find(查询条件)   例如 15 得到的结果是这样 如果你不想返回某个字段呢 ,你可以自己定义返回的字段值 语法这样 db.collection.find({查询条件},{返回字段}) 16 我们看到每次查询 "_id" 这个字段 都返回  我们可以将它设置为0 这样的话就不会返回 如 查询条件里的

搭建高可用mongodb集群(二)—— 副本集

http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高

mongo db 学习笔记 之二: mongodb 用户认证

首先要知道mongodb默认安装后是没有任何认证开启的,也就是说,所有能连接到服务器的人都能进数据查看,当然,你可以用防火墙来挡.但没有防火墙的保护,数据库暴露出来是非常危险的. mongodb关于安全分为几个方面,主要是:认证,基于角色的访问控制(授权),审计,加密,部署和环境的安全(涉及到网络跟系统的访问环境). 一 关于认证 使用用户名认证指令为: mongo --port 27017 -u manager -p 12345678 --authenticationDatabase admi

study Mvc step by step (二) 关于MVC的一些C#特有语法

在我们即将进入ASP.NET开发大门的时候.我们需要先学习一些C#的特有语法.而且对于传统的webform的开发,我们介绍的这些C#特有语法并不是每个人都熟悉的.本节将介绍一个MVC优良程序员所需要的C#语言特性. 一:c#的基本特性 1.1使用自动实现的属性 c#属性特性让你暴露一个类的数据片段,这些数据以及如何设置和接收数据采取了一种松耦合的方式.就是说并不是直接和我们类中的字段相关联,而是通过一个对外的接口.我们首先看一下下面的这个叫做   "product"  类  类里面我们