MongoDb文件被锁解决以及基本篇

     前天才装完了MongoDb,今天打开发现启动不了服务器了,经过看了异常信息,发现了是我自己手残导致了非法退出数据库,然后在数据文件存放目录(默认是/data/db)中生成了一个叫mongo.lock的文件,这个类似于在Unbantu中非法退出自后自动生成的锁文件,解决方法也很简单的,使用命令进入到/data/db里,执行rm mongo.lock,然后重启服务器,搞定。恭喜你,服务器复活了。
     简单的说下MongoDb,免得自己忘记了,它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的,由于之前学看Oracle和Redis,所以看这个数据库也是比较容易上手,MongoDb支持的数据结构非常的松散,是类似于JSON的BSON格式,因此是可以存储比较复杂的数据
    其特点:面向集合,模式自由,文档型存储
    适合的场合:网站数据,缓存,大尺寸.低价值的数据,高伸缩性的场景,用于对象以及JSON数据的存储。它最大的功能不是提高兵法的读写,而是在保证存储海量数据的同时还是能具有良好的查询性能。
    
   简单的说下其基本的增删查改,学了几种数据库之后,感觉还是不是很难,至少基础部分是这样,
    插入:eg:建立2个对象i和j,j={name:"xiaofeng"} ;i={age:18},保存到集合中db.things.save(i),db.things.save(j)就可以保存简单的数据了。但是需要注意的是:
            1:不需要预先创建一个集合,在第一次插入数据的时候会自动创
            2:在文档中可以存储任何结果的数据,但是在实际的应用中存储的还是相同类型的文档的集合,这样的灵活性很高,不需要类似alert table语句来修改数据结构。

            3:存储在MongoDB集合中的每个文档都有一个默认的额主键,它可以是该数据库支持的任何类型,默认的是Object,但和Oracle等数据库不同的是,由于MongoDB定位在分布式存储系统,所以它是不支持自增主键的,当然我们也是可以自己定义_id类型的,eg:db.things.insert({_id:3,name:"xiaofeng"})但是必须唯一,不然会报异常。 


    查询:查询分为普通查询,条件查询(findOne ,limit(常用在分页))

    一般的查询可以通过while循环输出,MonGoDB Shell中,执行var cursor=db.find.things.find();while(cursor.hasNext()) printjson(cursor.next())返回数据文件中的所有数据,当然也是可以使用JavaScript Shell中的JavaScript的forEach实现,但是forEach()必须定义一个函数提供每个游标元素调用,eg:db.things.find().forEach(printjson)输出数据,当然,你也是可以把 游标当成是数组,进行取数据eg:var cursor=db.things.find();printjson(cursor[2]),但是要注意的是这些特征只是MongoDB Shell里使用,并不是所有的应用程序取得都支持,如果有其他用户在集合中第一次或者是最后一次调用next(),可能得不到数据,所以要明确的锁定查询的游标,数据太多没显示完,可以通过使用it去遍历输出。条件查询也比较简单,eg:db.find.things({name:"xiaofeng"}).forEach(printjson),至于findOne()函数,是MonGoDB为了避免有比哦啊可能带来的开销,返回的是游标里的第一条数据,或者是返回的是null,即空数据。eg:printjson(db.things.find.findOne({name:"xiaofeng"}));我们也可以通过limit去限制数量,就好像mysql中的limit(a,b)函数一样,eg:db.things.find().limit(3)这里强烈的推荐这中方法去解决性能的问题,通过限制条数来减少网络传输,同时limit在分页中也用的比较的广泛。


    修改 :修改数据可以使用update方法eg:db.things.update({name:"xiaofeng"},{$set:{name:"xiaoxiaofeng"}})就修改好了,当然这只是比较简答的修改数据。


    删除:删除数据我们可以使用remove()方法,eg:db.things.remove({name:"xiaofeng"}) 
总的来说,基础部分还是不是很难的,接下来就是学习高级部分看,eg:高级查询,高级更新和高级特征,加油,小冯。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值