MongoDB 在windows shell环境下的基本操作和命令的使用示例(四)
2015-08-02 14:31
851 查看
接上一篇文章继续《MongoDB 在windows shell环境下的基本操作和命令的使用示例(三)》
1,集合的嵌套,在testcoll集合中添加一个嵌套集合,其它的嵌套和下面一样
db.testcoll.insert({"name":"顶级","age":22,"salares":5000,"course":["语文","数学","英语","meishu"],"parents":[{"name":"父亲111","job":"juzhang","age":45},{"name":"母亲111","job":"juzhang1","age":35}]})
2,这样集合的操作就会变的特别复杂,所以在实际使用中建议数据的存储结构尽量简单
集合中判断某个字段是否存在$exists,可以对一些不需要的数据进行过滤
找出集合中parents存在的字段
db.testcoll.find({"parents":{"$exists":true}}).pretty()
找出parents不存在的字段
db.testcoll.find({"parents":{"$exists":false}}).pretty()
3,where条件判断$where,下面4种形式等效,都能得下面的代码
db.testcoll.find({"$where":"this.age>50"}).pretty()//不是很常用
db.testcoll.find("this.age>50").pretty()//上面的简化版本
db.testcoll.find(function(){//javescript代码
return this.age>50;
}).pretty()
db.testcoll.find({"$where":function(){//javescript代码
return this.age>50;
}}).pretty()
where的嵌套组合,where一般很少用
db.testcoll.find({"$and":[
{"$where":"this.age>20"},
{"$where":"this.age<30"}
]}).pretty()
4,模糊查询(正则运算)
基础语法: {key:正则标记}
完整语法:{key:{"$regex":正则标记,“options”:选项}}
i;忽略大小写
m,多行查找
x,空白数据忽略
s,匹配所有字符(圆点)
db.testcoll.find({"name":/张/}).pretty()//正则简写
db.testcoll.find({"name":{"$regex":/李/i}}).pretty()//正则完整表述,i表示不区分大小写
5,数据排序,前面博客已经讲过,这边只提一下,注意自然排序
db.testcoll.find().sort({"age":1}).pretty()//按年纪升序
db.testcoll.find().sort({"age":-1}).pretty()//按年纪降序
db.testcoll.find().sort({"$natural":1}).pretty()//按存入的先后自然排序1,升,-1,降
6,分页显示,也适合大数据skip(),limit(),前面讲过,这里不再重复
7,集合数据的更新操作,这种操作比较麻烦,save(),update();
mutil: false更新一个,true更新所有
将年纪18岁更新为100分,注意参数
db.testcoll.update({"age":18},{"$set":{"score":100}},false,false)//更新一个
db.testcoll.update({"age":18},{"$set":{"score":100}},false,true)//更新所有
增加操作
db.testcoll.update({"age":18},{"$set":{"name":"不存在"}},true,false)
db.testcoll.find({"age":18}).pretty(),显示结果如下
8,修改器,像$set,大概提供了10种修改器
$inc:增加某个数据字段的值
语法:{“$inc”:{"成员":“内容”}}
将年纪为18的分数减30的同时年纪加一岁
db.testcoll.update({"age":18},{"$inc":{"score":-30,"age":1}})
db.testcoll.find({"age":19}).pretty()
$unset:删除某个成员值
$push:将内容追加到指定地方(针对数组)
db.testcoll.update({"name":"张三"},{"$push":{"course":"语文"}})
db.testcoll.find({"name":"张三"}).pretty()
$addtoset
$pushall:可以一次追加多个到数组里面,代码运行两次结果
db.testcoll.update({"name":"李四"},{"$pushAll":{"course":["语文","英语","体育"]}})
db.testcoll.update({"name":"李四"},{"$pushAll":{"course":["语文","英语","体育"]}})
db.testcoll.find({"name":"李四"}).pretty()
$pop:删除数组数据
db.testcoll.update({"name":"李四"},{"$pop":{"course":1}})
db.testcoll.find({"name":"李四"}).pretty()
$pull:从数组中删除指定内容的数据
db.testcoll.update({"name":"李四"},{"$pull":{"course":"体育"}})
db.testcoll.find({"name":"李四"}).pretty()
、
$pullAll,一次删除多个数据
db.testcoll.update({"name":"李四"},{"$pullAll":{"course":["语文","英语"]}})
db.testcoll.find({"name":"李四"}).pretty()
$rename:重命名
db.testcoll.update({"name":"李四"},{"$rename":{"age":"年纪"}})
db.testcoll.find({"name":"李四"}).pretty()
9,数据的删除
remove(can1,can2)
can1:删除条件
can2:true或是1只删除1个
10,游标(重点)
数据可以一行行的进行操作
对于find()方法就可以返回游标了
判断是否有下一行数据用hasNext()
取出数据next()
var cursor=db.testcoll.find()
cursor.hasNext()
cursor.next()
只输出姓名
var cursor=db.testcoll.find();
while(cursor.hasNext()){
var doc=cursor.next();
print(doc.name);
}
相关文章推荐
- mongodb简单操作
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(三)
- MongoDB 在windows shell环境下的基本操作和命令的使用示例(二)
- MongoDB分布式
- MongoDB导出
- MongoDB建立索引
- MongoDb的添加,查询,修改
- 非关系型数据定义和MongoDb的安装
- MongoDB中shell基本使用
- MongoDB配置客户端
- MongoDB的启动
- MongoDB的安装
- MongoDB初探系列之四:MongoDB与Java共舞
- mongodb分片集群突然停电造成一些错误,分片无法启动
- zabbix监控mongodb
- linux 下mongoDB备份与恢复
- mongodb索引
- 公司的实战mongodb Replica Sets+Sharding方案采用配置文件2
- mongodb初识
- MongoDB使用java代码实现增删改查