zoukankan      html  css  js  c++  java
  • MongoDB 快速入门

    MongoDB

    • Non-relational JSON Document Store
    • 开源
    • 文档数据库Document Database
    • 自动增长(忽略 高性能、高可用性等自我评价)
    • 动态schema
    • 不支持joins

    什么是Document Database

    数据库中的每个记录都被看作是一个以键值对为数据结构的文档

    JSON示例[value可为列表、可嵌套]

    { 'key' : 'value' ,

    'key' : [ 'v1', 'v2'] ,

    {} }

    下载

    https://www.mongodb.org/downloads

    配置

    解压到任意目录,修改环境变量,创建数据存储目录

    Linux中部分操作如下

    sudo gedit /etc/profile

    添加以下内容

    #mango
    export MANGO_HOME=/home/kevin/mongodb
    export PATH=$MANGO_HOME/bin:$PATH 
    source /etc/profile

    创建默认数据目录并更改权限

    sudo mkdir -p /data/db
    sudo chown kevin /data/db

    启动============下面的操作Windows和Linux相似===========

    在terminal/cmd中输入mongod

    如果设定其他目录,需要添加参数(如db存放目录路径中含空格,需要用双引号将路径括住),如

    mongod --dbpath D:ProgramFilesCSmongodbdb

    看到出现“waiting for connection”后就可以确定服务开启成功(在浏览器中打开下面两个网址,第一次用看两眼,有点存在感。注意的是使用过程不要关闭该窗口)

    http://localhost:27017/

    http://localhost:28017/

    shell中的CURD操作

    打开一个新的cmd,同样切换到bin目录,输入mongo(一个javascript shell),会连接到mongod(database server),并默认使用名为test的数据库

    for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )   //产生测试数据
    db 显示当前数据库的名称
    show dbs 列出所有数据库
    use <数据库名称> 如果数据库原本不存在将会创建
    show collections 列出db下的所有集合
     j = { name : "mongo" } 创建文档j
     db.testData.insert( j ) 将j插入到testData这个collection中(类似table)
    db.testData.find()[.skip(n)][.limit(n)] 列出testData中的记录,默认输出前20条,需要继续输出的话要输入it
    db.testData.findOne()[.pretty()] pretty可使文档更好看
    db.testData.find( { x : 3 } [.sort({x:-1})]  条件搜索
    db.testData.save(j) 与insert的不同之处在于,当已存在相同_id值的文档时,save会更新文档,insert则报错
    db.testData.count() 文档计数
    db.testData.update({"name":"mongo"},{"name":"manhua"}) 注意update是整个替换的,若多个匹配,只替换第一个,测试发现被update的会被先删除后插入,但_id不变;若要全部更新,要添加{multi: true}
    db.testData.remove({"x":3}) 所有匹配的文档都被删除,若参数为{},则全部文档将逐个被删

    命令进阶

    { key : { $gt : value } } 类似的还有$gte $lt $lte
    
     { key : { $exists : boolean } } 类似的: $upsert : true
    
    { arraykey : { $in : [] v1, v2, v3 } } 类似的:$all
    
    { $and : [ {key : value } , {key : value }] }   $or $set $unset $inc $addToSet $push $pushAll $pop
    
     db.RuleOut.find({"_id" : {'$regex':'...AI'} }) 或db.RuleOut.find({"_id" :/...AI/ })正则查询,对于第一种转义用\第二种用
    
    访问内嵌key使用’点‘: outerKey.innerKey

    更多命令参考官方文档http://docs.mongodb.org/manual/reference/method/

     【有个blog写的不错,上链接】http://www.cnblogs.com/huangxincheng/category/355399.html

    ==============

    备份与恢复

    mongodump -d [数据库名称] -o [保存路径]

    mongorestore -d [数据库名称] --drop [保存路径],其中drop选项是先删除原有数据库里面的数据

    mongorestore -d pssp --drop dump/pssp/rule80.bson 恢复单个collection

  • 相关阅读:
    【前端面试】前端知识点总结_前端大厂车轮战_转自mahmud(小麦)大神
    【网优】浅谈LTE无线网络优化
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
    Java单体应用
  • 原文地址:https://www.cnblogs.com/manhua/p/3617628.html
Copyright © 2011-2022 走看看