mongodb 相关使用方法

PHPABC 后端 891 次浏览 没有评论

 

mongodb 基本操作

    基本命令
    
    查看有那些数据库:
        show dbs;
    
    选择某个库:
        use db;
    
    查看库下的表(暂且说成是表,mongodb中称表问文档):
        show collections;
    
    插入数据:
        db.table.insert( {'name':'demo','sex':'m','age':18} );
        (注意在插入数据时的数据类型)
        插入数据可随意定义每行的结构,mongodb中没有固定的表结构
           eg: db.table.insert( {'names':'demo','sexs':'m','age':20} );
        
    查询数据:
        db.table.find();
        (在查询有条件的数据时,就要注意到数据类型的问题了)
        eg:
            db.table.insert( {'id':'123','age':18} );
            db.table.insert( {'id':123 ,'age':20} );
            db.table.find( {'id':123} );  # 只能查看到第二条数据
        
        另外一些条件(如下用法):
            $lt(小于),$lte(小于等于),$gt(大于),$gte(大于等于),$ne(不等于)
            db.table.find( {'age':{ '$lt':19 } } )
        
    排序:
        db.table.find().sort( {'age':1} )
        1 表示升序 -1 表示降序
    
    分页:
        db.table.find().limit(10).skip(20);
        ( skip 规定忽略几个,上述查询类似mysql中的 limit 20,10 )
    
    查询数量:
        db.table.count();
        db.table.find( {'age':{'$lt':19} } ).count()
    
    删除数据:
        db.table.remove();    //    删除全部
        db.table.remove( {'id':123} );    //    删除指定数据

    更新数据:
        db.table.update( {'id':123},{'age':25} )
        // 查找id为123的数据,将其age字段更新为25
    
        do.table.update( {'id':123} , {'age':22} ,true );
        // 类似于mysql的 replace用法 存在则更新,不存在则添加
    
    索引:
        db.table.ensureIndex({'id':1})    // 创建索引
        db.table.dropIndex({'id':1})    // 删除索引
        db.table.ensureIndex({'id':1},{unique:true}); // 独立索引
        db.table.ensureIndex({'id':1,'age':1})    // 联合索引
        
    备份(使用 mongodump.exe 备份数据):
        mongodump.exe -d learn -o backup   (备份整个 learn 数据库)
        mongodump.exe -d learn -c test -o backup (备份单独的表)
        ( -d 数据库 -c 数据表 -o 备份目录)
    
    恢复数据库( 使用 mongorestore.exe 恢复):
        mongorestore.exe -d lear -c test backup/learn/unicorns.bson
        ( -d 数据库 -c 数据表 )
    
    导出数据:    
        mongoexport.exe -d test -c mapinfo -o export.dat    ( 导出数据为json格式数据,默认格式 )
        ( -d 数据库 -c 表 -o 导出文件名)
        
        mongoexport.exe -d test -c mapinfo –csv -f id,name -o csv.csv (导出数据为csv格式数据)
        ( -d 数据库 -c 表 –csv 导出为csv格式 -f 导出字段名 -o 导出文件名)
        
    导入数据:
        mongoimport.exe -d test -c mapinfo mapinfo.dat (导入 json 格式数据 ,默认格式)
        (-d 数据库 -c 表   数据源)
        
        mongoimport.exe -d test -c mapinfo –type csv –headerline –file csv.csv   (导入csv格式数据)
        ( -d 数据库 -c 表 –type 类型 –headerline 不导入第一行  –file 数据源)
        
    
    用户权限(在每个数据库下都会存在一个 system.indexes 的表,存储的就是用户信息,前提:设置mongodb成为需要权限访问限制):
        use test;
        db.adduser('username','password');
        
        设置完毕之后再使用的话就需要验证用户了
        db.auth('username','password'); // 输出为1 正确,0 用户名、密码不对
            
        (超级管理员,使用超级管理员访问其他库需要先进入amdin库 再转到其他库)
        use admin;
        db.auth('username','password');

 

 

mongodb地理位置索引基本使用命令

 

1.显示数据库
show dbs;
2.显示集合
show collections
3.显示索引
db.coor1.getIndexes();
4.插入数据
> db.mapinfo.insert({"category" : "coffee","name" : "digoal coffee bar","loc" : [116.403119,39.914935]})
> db.mapinfo.insert({"category" : "coffee","name" : "digoal coffee bar","loc" : [116.414617,39.918034]})
> db.mapinfo.insert({"category" : "coffee","name" : "digoal coffee bar","loc" : [116.374373,39.918919]})
5.创建2d索引
db.coo1.ensureIndex({"coordinate" : "2d"},{"background" : true})
6.删除数据
db.logs.remove({'_id':ObjectId('4f29e4860b2e2ecb9910e304')})
这中方式是无法删除的,因为 mongodb的唯一id 不是作为一个字符串来存储的。,这个值通常是一个BSON对象id,因此,这个id对于集合中的每个 
成员都是唯一的,如果用户插入一个document没有提供一个id,数据库将自动生成一个id,并存储在_id字段。

一个BSON ObjectID是由12个字节组成:4字节时间+3字节机器id+2字节进程id+3字节的数字
{ "_id" : ObjectId("4c691e72ed2a47b462dfa806") }

7.修改数据
db.mapinfo.update({"_id":ObjectId('53fbe67f1d0439077a1b7724')},{$set:{category:'tea'}})
8.geonear查询,可返回距离
db.runCommand({geoNear:"mapinfo", near:[116.403694,39.913607]})
9.geonear查询,可返回距离,增加条数限制num
db.runCommand({geoNear:"mapinfo", near:[116.403694,39.913607],num:1})
10.geonear查询, 增加条件
db.runCommand({geoNear:"mapinfo", near:[116.403694,39.913607],query:{category:"tea"}})

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go