第八天
MongoDB安装
1. 下载安装包
> wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz
> tar zvxf mongodb-linux-i686-1.8.2.tgz
2. 安装准备
将mongodb移动到/opt/app/mongdb文件夹
> mv mongodb-linux-i686-1.8.2 /opt/app/mongodb
3. 创建数据库文件夹
> mkdir /opt/app/mongodb/data
4. 启动mongodb
cd到mongodb目录下的bin文件夹启动mongodb
> /opt/app/mongodb/bin/mongod --dbpath=/opt/app/mongodb/data
增删改操作
插入语句
> db.customer.insert({name:"gyw",mobile:"123458678900",email:"xxx@163.com"})
- 第一次插入数据时,不需要预先创建一个集合(例如customer),插入数据时会自动创建。
- 每次插入数据时如果没有显示的制定字段"_id",则会默认创建一个主键"_id"。默认主键的类型是ObjectId类型,由12个字节组成,前4个字节表示一个精确到秒的时间戳,之后3个是机器唯一标识,接着2个表示进程id,最后3个是一个随机的计数器,这样设计的好处是能更好的支持分布式存储。
- 每一个集合都必须有一个"_id"字段,不管是自动生成还是指定,值都必须唯一,如果插入重复值将会抛出异常。
修改语句
> db.collection.update(query, update, <upsert>, <multi>)
- query参数是一个查询选择器,值类型为document。
- update参数为需要修改的地方,值类型为document,如果update参数只包含字段选项,没有操作符($set、$inc等),则会发生取代性的更改。
- upsert为一个可选参数,boolean类型,默认值为false。当值为true时,update方法将更新匹配到的记录,如果找不到匹配的文档,则将插入一个新的文档到集合中。
- multi为一个可选参数,boolean类型,表示是否更新匹配到的多个文档,默认值为false,此时update方法只会更新匹配到的第一个文档;当为true时,update方法将更新所有匹配到的文档。
更改指定的字段值
> db.goods.update({name:"apple"},{$set:{name:"apple5s"},$inc:{price:4000}})
更改集合中与name:"apple"匹配的第一个文档,将其中的字段name设为"apple5s",字段price增加4000,其他字段保持不变。
更改指定字段而其他字段被清除掉
> db.goods.update({name:"htc"},{name:"htc one"})
更改集合中与name:"htc"匹配的第一个文档,将其中的字段name设为"htc one",文档中除了主键_id地段外,其他字段都被清除。
更改多个文档中的指定字段
> db.goods.update({name:"surface"},{$set:{price:6999}},{multi:true})
更改集合中与name:"surface"匹配的所有文档,将其中的字段price设为6999,其他字段不变。
找不到匹配的文档时则插入新文档
> db.goods.update({name:"iphone"}, {$set:{price:5999}},{upsert:true})
找不到匹配的文档,就会插入一个新的文档
删除语句
> db.collection.remove(<query>, <justOne>)
- query参数为可选参数,是一个查询选择器
- justOne参数为可选参数,值类型为boolean类型,默认值是false,表示是否只删除匹配的第一个文档,相当于关系数据库中的"limit 1"条件。
- 如果remove没有指定任何参数,它将删除集合中的所有文档,但是不会删除集合对应的索引数据。如果想删除集合中的所有文档,同时也删除集合的索引,可以使用drop方法。
删除匹配的所有文档
> db.goods.remove({name:"htc"})
删除匹配的第一个文档
> db.goods.remove({name:"huawei"}, 1)
删除所有文档,但不会删除索引
> db.goods.remove()
当利用remove删除一个文档后,文档对象也会从磁盘上相应的数据文件中删去。
网友评论