Mongo DB

MongoDB基本命令

  • MongoDB的默认安装路径为 C:\Program Files\MongoDB
  • 创建默认的数据库存放路径c:\data\db ,使用命令行把该路径关联到mongo上 C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe --dbpath c:\data\db,执行成功后数据库服务开启并开始监听

Mongo Shell

  • 运行 C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe 文件可以打开MongoDB Shell,它是一个自带的交互式的JavaScript shell,用来对MongoDB进行操作和管理的交互式环境
  • help 命令可以显示可使用的命令行

DB相关的操作

use tutorial

使用该命令会尝试连接名字为tutorial的数据库,如果不存在则创建。使用db.help()命令可以查看命令行帮助

show dbs

显示数据库的相关信息.

如果数据库相关的名字里包含了空格等字符,也可以用下面的命令

db["dbname"].find()
db.getCollection("dbname").find()

插入数据

通过下面的格式来添加数据:

db.restaurants.insert(
{
"address" : {
"street" : "2 Avenue",
"zipcode" : "10075",
"building" : "1480",
"coord" : [ -73.9557413, 40.7720266 ],
},
"borough" : "Manhattan",
"cuisine" : "Italian",
"grades" : [
{
"date" : ISODate("2014-10-01T00:00:00Z"),
"grade" : "A",
"score" : 11
},
{
"date" : ISODate("2014-01-16T00:00:00Z"),
"grade" : "B",
"score" : 17
}
],
"name" : "Vella",
"restaurant_id" : "41704620"
}
)

查找数据

如果想要查找所有的数据,则:

db.collectionname.find()

指定条件:

指定field条件进行筛选,使用如下格式:

{ <field1>: <value1>, <field2>: <value2>, ... }

具体的例子:

db.restaurants.find( { "borough": "Manhattan" } )

大于,小于条件的筛选

db.restaurants.find( { "grades.score": { $gt: 30 } } )
db.restaurants.find( { "grades.score": { $lt: 10 } } )

AND和OR

db.restaurants.find( { "cuisine": "Italian", "address.zipcode": "10075" } )
db.restaurants.find( { $or: [ { "cuisine": "Italian" }, { "address.zipcode": "10075" } ] } )

排序

db.restaurants.find().sort( { "borough": 1, "address.zipcode": 1 } )

更新数据

下面的操作更新name为Juni的记录,用$set 操作来更新cuisine 字段。 用 $currentDate 操作符来更新lastModified字段:

db.restaurants.update(
{ "name" : "Juni" },
{
$set: { "cuisine": "American (New)" },
$currentDate: { "lastModified": true }
}
)

更新内嵌的数据:

db.restaurants.update(
{ "restaurant_id" : "41156888" },
{ $set: { "address.street": "East 31st Street" } }
)

更新多条数据: 默认情况下update方法只更新一条数据。想要更新多条数据,使用multi option。

db.restaurants.update(
{ "address.zipcode": "10016", cuisine: "Other" },
{
$set: { cuisine: "Category To Be Determined" },
$currentDate: { "lastModified": true }
},
{ multi: true}
)

替换某条记录 根据某个_id字段的信息,用新的记录替换就得

db.restaurants.update(
{ "restaurant_id" : "41704620" },
{
"name" : "Vella 2",
"address" : {
"coord" : [ -73.9557413, 40.7720266 ],
"building" : "1480",
"street" : "2 Avenue",
"zipcode" : "10075"
}
}
)

删除某条记录

删除符合某个条件的所有记录:

db.restaurants.remove( { "borough": "Manhattan" } )

只删除符合某个条件的一条记录,使用justOne选项:

db.restaurants.remove( { "borough": "Queens" }, { justOne: true } )

删除所有的记录:

db.restaurants.remove( { } )

删除一个表:

db.restaurants.drop()

聚合运算

聚合并累加

用$group 来通过某个关键字进行分组,在$group中,指定需要分组的关键字为_id。$group通过field path访问字段,字段名字需要以$为前缀。$sum表示累加器,下面的语句表示计算字段为borough的各种情况的个数。

db.restaurants.aggregate(
[
{ $group: { "_id": "$borough", "count": { $sum: 1 } } }
]
);

输出结果为:

{ "_id" : "Staten Island", "count" : 969 }
{ "_id" : "Brooklyn", "count" : 6086 }
{ "_id" : "Manhattan", "count" : 10259 }
{ "_id" : "Queens", "count" : 5656 }
{ "_id" : "Bronx", "count" : 2338 }
{ "_id" : "Missing", "count" : 51 }

聚合并过滤

使用 $match 来过滤记录

db.restaurants.aggregate(
[
{ $match: { "borough": "Queens", "cuisine": "Brazilian" } },
{ $group: { "_id": "$address.zipcode" , "count": { $sum: 1 } } }
]
);

Mongodb 学习笔记的更多相关文章

  1. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  2. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  3. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

  4. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  5. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  6. 【转】MongoDB学习笔记(查询)

    原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...

  7. MongoDB学习笔记(六)--复制集+sharding分片 && 总结

    复制集+sharding分片                                                               背景 主机 IP 服务及端口 Server A ...

  8. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  9. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

  10. MongoDB学习笔记(三)--权限 && 导出导入备份恢复 && fsync和锁

    权限                                                                                             绑定内网I ...

随机推荐

  1. 进击的Python【第二十章】

    1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_view() / ...

  2. TOP 和 OFFSET 筛选(转)

    SQL Server 对行数的排序提供了 TOP 筛选.SQL Server 2012 新增了 OFFSET 筛选. 一.TOP 筛选 如果有 ORDER BY 子句,TOP 筛选将根据排序的结果返回 ...

  3. SVN

    你先在本地把包删了,然后提交上级目录就可以了.比如你要删除com.aaa.A这个类.你就把A删了,然后提交aaa就行,如果你要把aaa包删了,你就删了以后提交com这个包.SVN就删掉了 svn提交更 ...

  4. 【面试题】M

    一面: 1.介绍实习项目: 2.计算二叉树叶子节点的数量: 3.排序算法有哪些,手写快排: 4.长度为100的数组,值为1~100,乱序,将其中一个值改为0,找出被更改的值以及位置: 5.输入数值0~ ...

  5. BZOJ1120 : [POI2009]STR

    因为问题的对称性,只需要考虑求出有多少点离$A$更近即可. 枚举$4$个绝对值的正负号,可以解出坐标范围. 若可以转化为二维数点,则可以统一扫描线+树状数组解决. 否则是三维数点,按一维排序,剩下两维 ...

  6. Linux 学习记录

    整理学习Linux操作系统遇到的不理解的概念.逐个进行补充.我们用的版本是CentOs. what's the gcc? what's the yum? what's the wget?

  7. SPOJ FASTFLOW网络流水题

    Dinic=bfs+dfs  = = 用bfs算出到原点的最短路径(每条残存都算1) 然后每次都跑两端只差1的路径跑dfs,并且一直跑到不能跑 一个优化:如果一个点流出的量已经到流入量了就可以返回上一 ...

  8. python os.path模块

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...

  9. eclipse常见问题

    使用eclipse进入断点,当弹出"Confir Perspective Switch"视图时,选择"Yes".之后每次进入断点都会自动切换到debug视图. ...

  10. AngularJS中的route可以控制页面元素的改变,使多页面变成一个单页面。。。

    SPA(Single Page Application)指的是通单一页面展示所有功能,通过Ajax动态获取数据然后进行实时渲染,结合CSS3动画模仿原生App交互,然后再进行打包(使用工具把Web应用 ...