MongoDB随笔基本操作

一、MongoDB数据结构与关系型数据库比较

逻辑结构对比
MongoDB             
关系型数据库
文档(document)       
行(row)
集合(collection)        
表(table)
数据库(database)    数据库(database)

二、mongod 参数说明
最简单的,通过执行 mongod 即可以启动 MongoDB 数据库服务,mongod
支持很多的参数,但都有默认值,其中最重要的是需要指定数据文件路径,或者确保默认的/data/db
存在并且有访问权限,否则启动后会自动关闭服务。Ok,那也就是说,只要确保 dbpath 就可以启动
MongoDB 服务了

mongod的主要参数有:

dbpath:
数据文件存放路径,每个数据库会在其中创建一个子目录,用于防止同一个实例多次运行的 mongod.lock
也保存在此目录中。
logpath
错误日志文件
logappend
错误日志采用追加模式(默认是覆写模式)
bind_ip
对外服务的绑定
ip,一般设置为空,及绑定在本机所有可用 ip 上,如有需要可以单独指定
port
对外服务端口。Web 管理端口在这个 port
的基础上+1000
fork
以后台 Daemon
形式运行服务
journal
开启日志功能,通过保存操作日志来降低单机故障的恢复时间, 1.8 版本后正式加入,在取代在 1.7.5 版本中的
dur 参数。
syncdelay
系统同步刷新磁盘的时间,单位为秒,默认是 60 秒。
directoryperdb
每个 db
存放在单独的目录中,建议设置该参数。与 MySQL 的独立表空间类似
maxConns
最大连接数
repairpath
执行
repair 时的临时目录。在如果没有开启 journal,异常 down 机后重启,必须执行 repair操作。

三、简单查询:

db.c1.find();

c1:集合名称

db.things.findOne({name:"mongo"});

db.things.find().limit(3);

简单修改:

db.things.update({name:"mongo"},{$set:{name:"mongo_new"}});

db.things.remove({name:"mongo_new"});

复杂查询:

条件操作符
<, <=, >, >=
这个操作符就不用多解释了,最常用也是最简单的
db.collection.find({ "field" : { $gt: value } } ); //
大于:field > value
db.collection.find({ "field" : { $lt: value } } );//
小于:field < value
db.collection.find({ "field" : { $gte: value } } ); //
大于等于: field >= value
db.collection.find({ "field" : { $lte: value } } );
// 小于等于: field <= value
如果要同时满足多个条件,可以这样做
db.collection.find({ "field"
: { $gt: value1, $lt: value2 } } );// value1 < field < value

$all 匹配所有
这个操作符跟 SQL 语法的 in 类似,但不同的是, in 只需满足( )内的某一个值即可, 而$all 必须满足[
]内的所有值,例如:
db.users.find({age : {$all : [6, 8]}});
可以查询出 {name: ‘David‘,
age: 26, age: [ 6, 8, 9 ] }
但查询不出 {name: ‘David‘, age: 26, age: [ 6, 7, 9 ]
}

$exists 判断字段是否存在

查询所有存在 age 字段的记录
db.users.find({age: {$exists: true}});
查询所有不存在 name
字段的记录
db.users.find({name: {$exists: false}});
查询存在字段 age
的数据
db.c1.find({age:{$exists:true}});

null处理
db.c2.find({age:{"$in":[null], "$exists":true}});

$mod取模运算
db.c1.find({age: {$mod : [ 6 , 1 ] } });

$ne 不等于
db.c1.find( { age : { $ne : 7 } } );

$in包含

查询 age 的值在 7,8 范围内的数据
db.c1.find({age:{$in: [7,8]}});

$nin不包含

查询 age 的值在 7,8 范围外的数据
db.c1.find({age:{$nin: [7,8]}});

正则表达式匹配

db.c1.find({name: {$not: /^T.*/}});

Javascript 查询和$where 查询

db.c1.find( { a : { $gt: 3 } } );
db.c1.find( { $where: "this.a >
3" } );
db.c1.find("this.a > 3");
f = function() { return this.a >
3; } db.c1.find(f);

count 查询记录条数
db.c1.count();

skip 限制返回记录的起点

查询 c1 表的第 2 条数据
db.c1.find().skip(1).limit(1)

sort 排序

查询 c1 表按 age 升序排列
db.c1.find().sort({age: 1});
查询 c1 表按 age
降序排列
db.c1.find().sort({age: -1});

游标来循环处理每一条结果数据,具体语法如下:

for( var c = db.t3.find(); c.hasNext(); ) {
...
printjson(
c.next());
... }

MongoDB 还有另一种方式来处理游标
db.t3.find().forEach( function(u) { printjson(u); }
);

四、存储过程
MongoDB
为很多问题提供了一系列的解决方案,针对于其它数据库的特性,它仍然毫不示弱,表现的非比寻常。MongoDB
同样支持存储过程。关于存储过程你需要知道的第一件事就是它是用 javascript 来写的。也许这会让你很奇怪,为什么它用 javascript
来写,但实际上它会让你非常满意,MongoDB 存储过程是存储在 db.system.js 表中的,我们想象一个简单的 sql
自定义函数如下:
 db.system.js.save({_id:"addNumbers", value:function(x, y){
return x + y; }});
存储过程可以被查看,修改和删除,所以我们用 find
来查看一下是否这个存储过程已经被创建上了。
db.system.js.find()
结果:
{ "_id" : "addNumbers",
"value" : function cf__1__f_(x, y) {
return x +
y;
}}
db.eval()是一个比较奇怪的东西,我们可以将存储过程的逻辑直接在里面并同时调用,而无需事先声明存储过程的逻辑。
db.eval(‘addNumbers(3,
4.2)‘);
结果:7.2
从上面可以看出,MongoDB
的存储过程可以方便的完成算术运算,但其它数据库产品在存储过程中可以处理数据库内部的一些事情,例如取出某张表的数据量等等操作,这些MongoDB
能做到吗?答案是肯定的,MongoDB 可以轻而易举的做到,看下面的实例吧:
db.system.js.save({_id:"get_count",
value:function(){ return db.c1.count(); }});

MongoDB随笔基本操作,码迷,mamicode.com

时间: 2024-10-15 22:45:41

MongoDB随笔基本操作的相关文章

mongodb的基本操作与插入文档(document)

一.mongodb的基本操作: 1.查看mongodb当前所有的databases : show dbs 2.选择数据库(database) : use databaseName(该数据库不存在则会自动创建,但是只存在于mongodb预设的缓存中,如果你不做任何操作,关闭数据库,那么该数据库也就不存在了,如果你往该库中添加了数据,那么该库就被真正的创建了) 3.查看数据库中的集合(collection) : show collections 4.获取mongodb中的帮助 : db.help()

MongoDb的基本操作快速入门

1.MongoDb简介 mongodb是一个基于分布式存储的开源数据库系统又被称为文档数据库,可以将数据存储为一个文档,数据结构有键值对(key=>value)对组成,存储的文档类似于JSON对象(BSON->JSON的二进制化). 特点:内部执行引擎为JS解释器,把文档存储成BSON结构,在查询时,转换为JS对象,并可以通过熟悉的JS语法来操作. mongodb和传统数据库简单比较,最大的不同: 传统型数据库:结构化数据,定好了表结构后,每一行的内容,必定是符合表结构的,就是说列的个数以及类

MongoDB之基本操作与日常维护

MongoDB基本操作 MongoDB的基本操作主要是对数据库.集合.文档的操作,包括创建数据库.删除数据库.插入文档.更改文档.删除文档.和查询文档. 操作 描述 show dbs 查看当前实例下的数据库列表 show users 显示用户 use <db_name> 切换当前数据库 db.help() 显示数据库操作命令 show.collections 显示当前数据库中的集合 db.foo.help() 显示集合操作命令,foo是当前数据库下的集合 db.foo.find() 对当前数据

孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongoDB的简单操作,并继续对一些可能反复经常使用的操作进行简单的封装.同时通过搜索了解了如何对本地Mongo数据库进行权限设置(没有实践本地数据库的用户权限设置.) 按个人规划,今天是初步了解学习MongoDb数据库的最后一个学习日,后续将在真正使用此数据库时,再对其进行深入研究. 一.今天完成了两个可

mongodb的基本操作-小结

mongodb的基本操作-小结目录1.启动2.访问3.数据库命令4.集合命令(对于表的命令)5.数据的增删改==================================================================正文1.启动服务端(1)Linuxservice mongod start (2)windowsmongod --port 27017 --dbpath d:/mongodb_data --auth 2.访问客户端(1)windows.Linuxmongo -

mongodb的基本操作

/usr/local/mongodb/bin/mongo#启动mongodb MongoDB shell version: 2.2.6 connecting to: test show dbs;#查看数据库 imooc 0.203125GB local (empty) use imooc_2#当没有imooc_2数据库时这个命令相当于创建了此数据库 switched to db imooc_2 show tables#查看数据库下的表 system.indexes teacher db.teac

mongodb随笔

笔者os环境ubuntu14 LTS x64 安装命令:sudo apt-get install mongodb ,安装时需要联网,且需要/var至少3.5g空间. 安装成功后,查看服务状态: sudo service mongodb status,正常情况下显示:mongodb start/running, process 2043 或者查看端口情况: sudo netstat -ntlp, 有如下这行表示正确: tcp        0      0 127.0.0.1:27017    

Mongodb的基本操作-数据库 集合 文档的增删改查

数据库操作: //查看有哪些数据库 > show dbs local  0.078GB mydb   0.078GB //use操作将切换到一个数据库 如果数据库存在将直接切换 如果不存在 那么会在切换之后,第一次执行新增修改操作的时候去创建这个数据库 > use newdb switched to db newdb //此时还没有创建 > show dbs local  0.078GB mydb   0.078GB > db.persion.insert({age:10}) Wr

mongoDB数据库基本操作

mongoDB中聚集集合(collection/coll)相当于mysql中的表 文档相当于mysql中的每一行数据 常用命令 1.获得帮助命令 db.help() db.表名.help() db.表名.find().help() rs.help() 2.切换/创建数据库 use 数据库名称  注意:mongoDB的数据库可以先使用,后创建,当创建一个集合(table)时,当前数据库会自动创建 例子:有一个数据库为sutdentdb,要切换到这个数据库则: use studentdb 3.查询所