【转】Mongodb 学习笔记

本文介绍了MongoDB的安装过程,详细讲解了如何在Windows上设置数据库路径并启动服务。MongoDBShell是用于交互式管理数据库的工具,提供了丰富的命令行操作。文章深入探讨了数据库的基本操作,如创建、显示、插入、查找、更新和删除数据,以及聚合运算。此外,还展示了如何使用各种查询条件,如大于、小于、AND和OR操作,以及排序和更新内嵌数据。
摘要由CSDN通过智能技术生成

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字段。用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来通过某个关键字进行分组,在group中,指定需要分组的关键字为_id。group通过fieldpath访问字段,字段名字需要以group通过fieldpath访问字段,字段名字需要以为前缀。$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 } } }
   ]
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值