MongoDB基础

安装

MongoDB的安装很简单,下载解压即可

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.10.tgz
tar mongodb-linux-x86_64-rhel62-3.2.10

配置

  • 新建文件夹及文件,结构目录如下
└── node
    ├── data
    │   └── db
    ├── log
    └── mongodb.conf
  • 修改配置文件
vi mongodb.conf

内容如下

# 数据库文件位置
dbpath=/usr/local/mongodb/node/data
# 日志文件位置
logpath=/usr/local/mongodb/node/log/mongod.log
# 以追加方式写入日志
logappend = true
# 是否以守护进程方式运行
fork = true
# 绑定ip
bind_ip = xxxxxxxx
# 默认27017
port = 27000
  • 设置环境变量
vi /etc/profile
#MongoDB
export PATH=$PATH:/usr/local/mongodb/mongodb-linux-x86_64-rhel62-3.2.10/bin
source /etc/profile

启动

[root@iZwz9io83xn1czh8rty3qlZ bin]# ./mongod  --config /usr/local/mongodb/node/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 4808
child process started successfully, parent exiting

基础操作

连接

[root@iZwz9io83xn1czh8rty3qlZ bin]# ./mongo –host xxxxxxx –port 27000
MongoDB shell version: 3.2.10
connecting to: xxxxxxx:27000/test
Welcome to the MongoDB shell.

创建数据库

> use mongotest
switched to db mongotest

创建Collection

> db.createCollection("test");

插入文档

  • 如果Collection -“test”不存在,会自动创建
> db.test.insert({name:"zhangsan"});
WriteResult({ "nInserted" : 1 })
  • 支持javascript
> for(var i=0;i<100;i++) db.test.insert({name:"name"+i,age:i});
WriteResult({ "nInserted" : 1 })
> db.test.find();
{ "_id" : ObjectId("582c60cd9d229b42b64bd2cd"), "name" : "zhangsan" }
{ "_id" : ObjectId("582c62a29d229b42b64bd2ce"), "name" : "name0", "age" : 0 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2cf"), "name" : "name1", "age" : 1 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d0"), "name" : "name2", "age" : 2 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d1"), "name" : "name3", "age" : 3 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d2"), "name" : "name4", "age" : 4 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d3"), "name" : "name5", "age" : 5 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d4"), "name" : "name6", "age" : 6 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d5"), "name" : "name7", "age" : 7 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d6"), "name" : "name8", "age" : 8 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d7"), "name" : "name9", "age" : 9 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d8"), "name" : "name10", "age" : 10 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d9"), "name" : "name11", "age" : 11 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2da"), "name" : "name12", "age" : 12 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2db"), "name" : "name13", "age" : 13 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2dc"), "name" : "name14", "age" : 14 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2dd"), "name" : "name15", "age" : 15 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2de"), "name" : "name16", "age" : 16 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2df"), "name" : "name17", "age" : 17 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2e0"), "name" : "name18", "age" : 18 }
Type "it" for more

更新文档

> db.test.update({"_id":ObjectId("582c60cd9d229b42b64bd2cd")},{$set:{name:"zhangsan-update"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test.find();
{ "_id" : ObjectId("582c60cd9d229b42b64bd2cd"), "name" : "zhangsan-update" }

类似于关系型数据库中

update test set name=’zhangsan-updatewhere id=582c60cd9d229b42b64bd2cd;
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
> db.test.find({name:"zhangsan"});
{ "_id" : ObjectId("582c64379d229b42b64bd332"), "name" : "zhangsan" }
{ "_id" : ObjectId("582c64389d229b42b64bd333"), "name" : "zhangsan" }
> db.test.update({name:"zhangsan"},{$set:{name:"zhangsan-multi"}},{multi:"true"});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })
> db.test.find({name:"zhangsan"});
> db.test.find({name:"zhangsan-multi"});
{ "_id" : ObjectId("582c64379d229b42b64bd332"), "name" : "zhangsan-multi" }
{ "_id" : ObjectId("582c64389d229b42b64bd333"), "name" : "zhangsan-multi" }

查询文档

  • 无条件
> db.test.find();
{ "_id" : ObjectId("582c60cd9d229b42b64bd2cd"), "name" : "zhangsan" }
  • And
> db.test.find({name:"name18",age:18});
{ "_id" : ObjectId("582c62a29d229b42b64bd2e0"), "name" : "name18", "age" : 18 }
  • Or
> db.test.find({$or:[{name:"name18"},{age:19}]});
{ "_id" : ObjectId("582c62a29d229b42b64bd2e0"), "name" : "name18", "age" : 18 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2e1"), "name" : "name19", "age" : 19 }
  • 分页
    limit:每页数据数量;
    skip:跳过多少数据;
> db.test.find().limit(4).skip(3);
{ "_id" : ObjectId("582c62a29d229b42b64bd2d0"), "name" : "name2", "age" : 2 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d1"), "name" : "name3", "age" : 3 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d2"), "name" : "name4", "age" : 4 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d3"), "name" : "name5", "age" : 5 }
> db.test.find().limit(5).skip(4);
{ "_id" : ObjectId("582c62a29d229b42b64bd2d1"), "name" : "name3", "age" : 3 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d2"), "name" : "name4", "age" : 4 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d3"), "name" : "name5", "age" : 5 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d4"), "name" : "name6", "age" : 6 }
{ "_id" : ObjectId("582c62a29d229b42b64bd2d5"), "name" : "name7", "age" : 7 }

函数

> db.test.find({name:"zhangsan-multi"});
{ "_id" : ObjectId("582c64379d229b42b64bd332"), "name" : "zhangsan-multi", "age" : 18 }
{ "_id" : ObjectId("582c64389d229b42b64bd333"), "name" : "zhangsan-multi", "age" : 18 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd334"), "name" : "zhangsan-multi", "age" : 0 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd335"), "name" : "zhangsan-multi", "age" : 1 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd336"), "name" : "zhangsan-multi", "age" : 2 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd337"), "name" : "zhangsan-multi", "age" : 3 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd338"), "name" : "zhangsan-multi", "age" : 4 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd339"), "name" : "zhangsan-multi", "age" : 5 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd33a"), "name" : "zhangsan-multi", "age" : 6 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd33b"), "name" : "zhangsan-multi", "age" : 7 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd33c"), "name" : "zhangsan-multi", "age" : 8 }
  • avg
> db.test.aggregate([{$group:{"_id":"$name","avg":{$avg:"$age"}}}])
{ "_id" : "zhangsan-multi", "avg" : 6.545454545454546 }
  • sum
> db.test.aggregate([{$group:{"_id":"$name","sum_value":{$sum:"$age"}}}])
{ "_id" : "zhangsan-multi", "sum_value" : 72 }
  • max
> db.test.aggregate([{$group:{"_id":"$name","max_value":{$max:"$age"}}}])
{ "_id" : "zhangsan-multi", "max_value" : 18 }
  • min
> db.test.aggregate([{$group:{"_id":"$name","min_value":{$min:"$age"}}}])
{ "_id" : "zhangsan-multi", "min_value" : 0 }

排序

1:升序
-1:降序

> db.test.find({name:"zhangsan-multi"}).sort({age:1});
{ "_id" : ObjectId("582c6cf89d229b42b64bd334"), "name" : "zhangsan-multi", "age" : 0 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd335"), "name" : "zhangsan-multi", "age" : 1 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd336"), "name" : "zhangsan-multi", "age" : 2 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd337"), "name" : "zhangsan-multi", "age" : 3 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd338"), "name" : "zhangsan-multi", "age" : 4 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd339"), "name" : "zhangsan-multi", "age" : 5 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd33a"), "name" : "zhangsan-multi", "age" : 6 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd33b"), "name" : "zhangsan-multi", "age" : 7 }
{ "_id" : ObjectId("582c6cf89d229b42b64bd33c"), "name" : "zhangsan-multi", "age" : 8 }
{ "_id" : ObjectId("582c64379d229b42b64bd332"), "name" : "zhangsan-multi", "age" : 18 }
{ "_id" : ObjectId("582c64389d229b42b64bd333"), "name" : "zhangsan-multi", "age" : 18 }

索引

  • 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
    这种扫描全集合的查询效率是非常低的,特别在处理大量的数据。
  • 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为false。
> db.test.ensureIndex({name:1})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值