文档章节

MongoDB 实战笔记 一

东湖畔新家
 东湖畔新家
发布于 2017/05/09 18:55
字数 765
阅读 3
收藏 0

MongoDB  实战笔记

 

来建立一个 test 的集合并写入一些数据.  建立两个对象 j 和 t ,  并保存到集合中去.
在例子里 “>”  来表示是 shell  输入提示符
> j = { name : "mongo" };
{"name" : "mongo"}
> t = { x : 3 };
{ "x" : 3  }
> db.things.save(j);
> db.things.save(t);
> db.things.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }


> for( var i = 1; i < 10; i++ ) db.things.save( { x:4, j:i } );
> db.things.find();

 

这里循环次数是 10,  但是只显示到第 8 条,  还有 2 条数据没有显示.  如果想继
续查询下面的数据只需要使用”it”命令,

 

MongoDB 中,每一个集合都必须有一个叫做_id 的字段,字段类型默认是 ObjectId ,换句话
说,字段类型可以不是 ObjectId

 


虽然_id 的类型可以自由指定,但是在同一个集合中必须唯一,如果插入重复的值的话,系统
将会抛出异

 

> var cursor = db.things.find();
> while (cursor.hasNext()) printjson(cursor.next());

显示了游标风格的迭代输出. hasNext()  函数告诉我们是否还有数据,  如果有则
可以调用 next()  函数.


db.things.find().forEach(printjson);


在 MongoDB shell  里,  我们也可以把游标当作数组来用:
> var cursor = db.things.find();
> printjson(cursor[4]);

 

把游标转换成真实的数组类型:
> var arr = db.things.find().toArray();
> arr[5];
{ "_id" : ObjectId("4c220a42f3924d31102bd859"), "x" : 4, "j" : 4 }

 


findOne()  函数.  这个函
数和 find()  函数一样,  不过它返回的是游标里第一条数据,  或者返回 null,即空数据.
> printjson(db.things.findOne({name:"mongo"}));

 

 更新

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

 

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

删除多条
for(var i=0;i<1000;i++) db.things.remove({j:i});

 

查询100条出来
db.things.find().limit(100);

 

<, <=, >, >=  这个操作符就不用多解释了,最常用也是最简单的
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

db.things.find({"xy":{$gt:"my0",$lt:"my7"}});    <  <
db.things.find({"xy":{$gte:"my0",$lte:"my7"}});  <=  <=

db.c4.find("this.x>300000 && this.x<300002")

 

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

 

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

 


查询 age 取模 6 等于 1 的数据
>   db.c1.find({age: {$mod : [ 6 , 1 ] } })
{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }

 


查询 age 的值不等于 7 的数据
> db.c1.find( { age : { $ne : 7 } } );
{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }

 


查询 age 的值在 7,8 范围内的数据
> db.c1.find({age:{$in: [7,8]}});
{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }
{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }

 

查询 age 的值在 7,8 范围外的数据
> db.c1.find({age:{$nin: [7,8]}});
{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

 

对于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }记录
匹配 db.users.find({favorite_number: {$size: 3}});
不匹配 db.users.find({favorite_number: {$size: 2}});

 

查询不匹配 name=B*带头的记录
db.users.find({name: {$not: /^B.*/}});

 


查询 c1 表的数据量
> db.c1.count()

 

查询 a 大于 3 的数据,下面的查询方法殊途同归
db.c1.find( { a : { $gt: 3 } } );

© 著作权归作者所有

东湖畔新家
粉丝 1
博文 170
码字总数 31582
作品 0
杭州
后端工程师
私信 提问
阿里专家视频课限时抢!精讲+实操12节课学懂MongoDB数据库!

想要学习MongoDB却不知道如何入门? 漫天的培训课程却无一讲解实战案例? 云栖社区联手阿里云大学独家出品—— 阿里云MongoDB技术负责人、MongoDB中文社区联席主席联合操刀 12期精讲+实操,全...

a独家记忆
2018/07/12
0
0
基于云数据库MongoDB版进行应用开发

MongoDB是一个基于分布式文件存储的数据库,在互联网、物联网、游戏、金融等领域被广泛采用。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是当前最流行的Nosql...

mcy0425
2018/09/14
28
0
《阿里巴巴MongoDB4.0高级实战:基于Java Spring Boot 2.0》运维、监控、聚合、集群、监控等高级面试题

《阿里巴巴MongoDB4.0高级实战》阿里巴巴技术大牛 资深专家P9叶翔、专家徐雷. NoSQL排名第一!最流行的NoSQL数据库;谷歌、阿里巴巴、蚂蚁金服、腾讯、百度等一线互联网公司必备技能。 本系列...

徐雷frank
2018/11/01
0
0
MongoDB学习笔记[安装与配置]

笔记是基于Windows下使用MongoDB记下的。 Mongo数据模型 一个Mongo系统(参考上述部署)包含一组数据库一个 database 包含一组collection一个 collection 包含一组document一个 document 是一...

click
2011/09/06
344
0
win7安装MongoDB学习笔记

一、安装文件 官方网址:http://www.mongodb.org/downloads,选择对应系统的文件下载。 二、安装过程: 1、解压缩文件,copy文件夹里的bin文件夹并置于C:Program Filesmongodb文件夹下,然后...

DavidBao
2015/03/24
33
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
13
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
12
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
12
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部