第八天

作者: MS100 | 来源:发表于2016-09-19 10:38 被阅读0次

    第八天

    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"})
    
    1. 第一次插入数据时,不需要预先创建一个集合(例如customer),插入数据时会自动创建。
    2. 每次插入数据时如果没有显示的制定字段"_id",则会默认创建一个主键"_id"。默认主键的类型是ObjectId类型,由12个字节组成,前4个字节表示一个精确到秒的时间戳,之后3个是机器唯一标识,接着2个表示进程id,最后3个是一个随机的计数器,这样设计的好处是能更好的支持分布式存储。
    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删除一个文档后,文档对象也会从磁盘上相应的数据文件中删去。

    相关文章

      网友评论

          本文标题:第八天

          本文链接:https://www.haomeiwen.com/subject/exzgettx.html