第二部分 Mongodb增删改查

学习内容:
1.mongodb增加操作
2.mongodb删除操作
3.mongodb查询操作
增删改查的高级应用
Capped Collection(固定集合)
GridFS 大文件上传或下载

1: insert
MongoDB是面向文档存储的数据库,文档结构形式叫BSON(类似JSON)
db.c1.insert({name:"user1"});
db.c1.save({_id:1, name:"user1"}); //save()如果已经存在就不会插入,如果不存在就插入
//这里要与id相同的值才不会被插入
//save就是id相同就更新,没有相同id就插入

删除
db.c1.remove();
db.c1.remove({name:"user1"});

db.c1.find({name:"user1"},{name:1, age:1, _id:0});
条件表达式
< <= > >= !=
$gt: 大于
$lt: 小于
$gte: 大于等于
$lte: 小于等于
$ne: 不等于

统计: 
db.c1.count();
db.c1.find().count();
//count(1); 里面有一个条件,如果为1,那么会取条件,如果为0不会理会条件语句

排序:
db.c1.find().sort(age:1); //1是升序 0是降序

取多少个
db.c1.find().limit(4);

跳过几个
db.c1.skip(1);
db.c1.skip(0).limit(10).sort({age:-1});

$all
操作类似于$in操作,但是不同的是,$all操作要求数组里面的值全部是包含在返回的记录里面
db.c2.find({post:{$all:[1,2,3]}});

$exists
操作检查一个字段是否存在
db.c2.find({age:{$exists:1}}); 测试一个字段是否存在

$mod
操作可以让我们简单的进行取模操作,而不需要用到where子句
//这里的是字段值的取余操作
db.c1.find({age:{$mod:[2]}});

$in 操作类似于传统关系数据库中的IN
db.c1.find({age:{$in:[1,2,3]}})

$nin 与$in相反
db.c1.find({age:{$nin:[2,3,4]}});

$or 查看指定多个条件的记录,跟sql的or差不多
db.c1.find({$or:[{name:"user1"},{name:"user2"},{age:10}]});

$nor 与$or相反过滤指定的条件
db.c1.find({$nor:[{name:"user1"},{name:"user2"},{age:10}]});

学习内容:
1.mongodb增加操作
2.mongodb删除操作
3.mongodb查询操作
增删改查的高级应用
Capped Collection(固定集合)
GridFS 大文件上传或下载

1: insert
MongoDB是面向文档存储的数据库,文档结构形式叫BSON(类似JSON)
db.c1.insert({name:"user1"});
db.c1.save({_id:1, name:"user1"}); //save()如果已经存在就不会插入,如果不存在就插入
//这里要与id相同的值才不会被插入
//save就是id相同就更新,没有相同id就插入

删除
db.c1.remove();
db.c1.remove({name:"user1"});

db.c1.find({name:"user1"},{name:1, age:1, _id:0});
条件表达式
< <= > >= !=
$gt: 大于
$lt: 小于
$gte: 大于等于
$lte: 小于等于
$ne: 不等于

统计: 
db.c1.count();
db.c1.find().count();
//count(1); 里面有一个条件,如果为1,那么会取条件,如果为0不会理会条件语句

排序:
db.c1.find().sort(age:1); //1是升序 0是降序

取多少个
db.c1.find().limit(4);

跳过几个
db.c1.skip(1);
db.c1.skip(0).limit(10).sort({age:-1});

$all
操作类似于$in操作,但是不同的是,$all操作要求数组里面的值全部是包含在返回的记录里面
db.c2.find({post:{$all:[1,2,3]}});

$exists
操作检查一个字段是否存在
db.c2.find({age:{$exists:1}}); 测试一个字段是否存在

$mod
操作可以让我们简单的进行取模操作,而不需要用到where子句
//这里的是字段值的取余操作
db.c1.find({age:{$mod:[2]}});

$in 操作类似于传统关系数据库中的IN
db.c1.find({age:{$in:[1,2,3]}})

$nin 与$in相反
db.c1.find({age:{$nin:[2,3,4]}});

$or 查看指定多个条件的记录,跟sql的or差不多
db.c1.find({$or:[{name:"user1"},{name:"user2"},{age:10}]});

$nor 与$or相反过滤指定的条件
db.c1.find({$nor:[{name:"user1"},{name:"user2"},{age:10}]});

$size
操作将会查询数组长度等于输入参数的数组

$elemMatch 元素配置的意思

slaveOk
当我们在replica set进行检索操作时,默认的路由会选择master机器,当我们需要针对任意的从机进行查询的时候,我们需要开启slaveOk选项。当我们在没有开启salveOk选项的时候,如果进行此操作会报如下错: *** not master and slaveok=false
所以我们要进行如下操作: rs.slaveOk(); // enable querying a secondary db.users.find(...)

11) Cursors游标及Cursor Methods
遍历游标
var x = db.c1.find();
x.next();
x.hasNext();
while(x.hasNext() == true){
x.next();
}

NULL查询(有一个值是为null,或者一个值不存在)
db.c4.find({age:null}); //列出所有为null或者不存在的值
db.c4.find({age:{$type:10}}); //列出所有为null的数据

第二种写法
db.c4.find({age:{$exists:1, $in:[null]}});
//两个条件,一个是exists必须存在,二是为null的数据

$slice

4. Update
1) 语法 db.collection.update( criteria, objNew, upsert, multi )
参数说明: Criteria:用于设置查询条件的对象 Objnew:用于设置更新内容的对象 Upsert:如果记录已经存在,更新它,否则新增一个记录 Multi:如果有多个符合条件的记录,全部更新 注意:默认情况下,只会更新第一个符合条件的记录

$set //修改字段 
db.c5.update({name:"user1"},{$set:{age:10}},0,1);

$inc //对字段进行加 a = a+1
db.c5.update({},{$inc:{age:-10}},0,1);

$unset //删除一个字段
db.c5.update({},{$unset:{age:1}});

$push
db.c5.update({},{$push:{arr:1}}); //压入一个值进入数组

$pushAll
db.c5.update({}, {$pushAll:{arr:[2,3,4]}}); //压入多个值进入数组

$pop
db.c5.update({}, {$pop:{arr:1}}); //弹出数组中的最后一个元素
db.c5.update({}, {$pop:{arr:1}}); //弹出数组中的第一个元素

$addToSet
语句: {$addToSet: {field: value}}
如果filed是一个已经存在的数组,并且value值不在其中,那么value加入到数组中
filed不存在,那么把value当成一个数组存储到filed中
filed是一个已经存在的非数组类型,那么将会报错

扩展肜户
{$addToSet:{a:{$each:[1,2,3,4,5,6]}}};

$pull
语法:{$pull:{field:_value}}
功能: 如果field是一个数组,那么删除符合_value检索条件的记录
如果field是一个已经存在的非数组,那么会报错

$pullAll
语法: {$pullAll:{field:value_array}}
功能: 同$pull类似,只是value的数据类型是一个数组

$rename
语法:{$rename:{old_field_name: new_field_name}}
功能:重命名指定的字段名称

特殊操作符:$
$操作符代码查询记录中第一个匹配条件的记录项
$db.c5.update({"arr.title":"linx"}, {$set:{arr.$.title:"I lover linx"}});

注意: 在数组中用$配合$unset操作符的时候,效果不是删除的元素,而是把匹配的元素变成null
$db.c5.update({"arr.title":"php"},{$unset:{arr.$:1}});

var x = db.c1.findOne({"user":"user1"});
x.age = 40;
x.nickname="xlc";
db.c1.save(x);

性能监控
通过对数据库的性能监控,能够更好的了解数据库的工作状态,从页进行优化
介绍几个性能监控的工具
Mongofniff
此工具可以从底层监控到底有那些命讼发送给MongoDB去执行
./mongosniff --soruce NET lo
它是实时动态监视的,需要打开中一个客户端进行命讼操作,可以将这些数据输出到一个日志文件中,那么就可以保留下所有数据库操作的历史记录,对于后期的性能分析和安全审计工作将是一个巨大的贡献

时间: 2024-10-13 12:06:38

第二部分 Mongodb增删改查的相关文章

Java springboot之Mongodb增删改查

1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>2.1.6.RELEASE</version> </dependency> 完整pom.xm文件 <?xml version="1.0&

springMVC操作mongoDB增删改查

下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(null));  //非空    query.with(new Sort(new Order(Direction.DESC, "ct")));  //倒叙 多个字段排序:第一排序按照sort降序,第二排序按照ct降序    query.with(new Sort(new Order(Dire

深入浅出MongoDB(六)java操作mongodb增删改查

java操作mysql数据库的代码我们已经了如指掌了,增删改查,java对mongodb数据库也是类似的操作,先是数据库连接,再是进行操作. 首先我们进入进入admin数据库,然后建立自己的数据库testMongoDb,进入admin数据库后,就可以直接进入testMongoDb,因为用户可以进入系统的数据库,就是超级管理员,use testMongoDb后,为该数据库设置用户名和密码,db.addUser('root','root'),这样我们在程序中连该数据库,并实现增删改查,代码如下所示.

[MongoDB]增删改查

摘要 上篇文章学习了mongodb在windows上的安装,以及如何开启mongodb,最后列举了简单的增删改查操作.本篇将继续深入学习一下增删改查. 相关文章 [MongoDB]入门操作 CRUD 通过上篇文章,我们知道collection中存储的每个对象是一个document对象.document是以键值对存在的json形式的对象.我们都知道json的value中存储的数据,可能是单个对象,字符串,数组,也可能是嵌套的json等类型的数据. insert 插入操作又分为:单个插入和批量插入.

Java操作MongoDB增删改查完美Demo

--因为实习工作需要,在学MongoDB,参考了公司的一个MongDB服务类,写了一个整合的Demo,涉及到的大部分的增删改查操作,而且还算规范,给大家参考!源代码:(完整项目文件下载链接:点击打开链接)http://download.csdn.net/detail/zhangliangzi/9555872 使用说明: 一.MongoDB数据库参数配置 1.推荐使用mongodb.cfg.properties配置,则在构造MongoDBService对象的时候只需调用无参构造方法即可自动完成配置

mongodb增删改查操作

Note:mongodb存储的是文档,且文档是json格式的对象,所以增删改查都必须是json格式对象. 1.增加数据,语法: db.collectionName.isnert(document). #不指定文档的id,数据库会默认分配一个随机id db.user.insert({name:'zhaos',age:23,sex:'f'}); #指定文档的id db.user.insert({_id:5,name:'zhaos',age:23,sex:'f'}); #增加单个文档 db.user.

Python对MongoDB增删改查

pip install pymongo import pymongo # 建立连接 client = pymongo.MongoClient() # 指定数据库 (不存在则会新建) db = client['py_mongo'] # 删除数据库 # client.drop_database('py_mongo_temp') # 创建集合 # db.create_collection('col_temp') # 删除集合 # print(db.drop_collection('col_temp')

mongodb增删改查

一)增 1.增加一条记录 db.test.insert({name:'aa', age:20}); 2.增加多条记录 好像没找到类似 mysql 的 insert into tb_name values (),() 这种方法,不过 mongo里可以使用js语法,所以可以使用for循环来增加多条记录 for(i=0;i<10;i++) db.test.insert({'name':'bb', 'age':21+i}); 二)删 1.删除一条记录(没找到删指定条记录的方法) db.test.remo

测开之路五十一:代码实现MongoDB增删改查

初始化时连接.析构时断开连接 from pymongo import MongoClient class Mogo(object): def __init__(self, host='127.0.0.1', port=27017): """ 初始化时连接 """ self.connect = MongoClient(host, port) def __del__(self): """ 析构时断开连接 "&q