目录:

  • MongoDB数据类型
  • MongoDB新增语法
  • MongoDB查询语法
  • MongoDB查询选择器
  • MongoDB关联查询

MongoDB数据类型:

MongoDB新增语法:

语法:db.collectionName.insert(document)

示例

1、db.local.insert({name:'thinking in java', price:88.08})

2、或者是先定义变量

var data = {name:'jdr', age:18}

db.local.insert(data)

MongoDB查询语法:

db.collectionName.find(query, projection)

参数说明

1、query:可选;可使用查询操作符指定查询条件。

2、projection:可选;可指定返回的键,若不指定则返回所有的键(1=显示,0=不展示)

示例

1、查询所有:db.local.find()

2、查询指定条件:db.local.find({name: 'zd'})

3、如果想要返回的数据易读的话可加上pretty():db.local.find({name: 'zd'}).pretty()

4、指定返回name:db.local.find({},{name:1})

5、指定不返回name:db.local.find({},{name:0})

MongoDB查询选择器:

1、范围选择器、布尔选择器、正则选择器:

2、排序选择器:1=升序,-1=降序

db.local.find().sort({name:1, age:-1})

3、跳过和限制选择器,跳过前面n条数据,限制和mysql中limit效果一致

db.local.find().skip(1).limit(2)

4、过滤重复字段选择器,和mysql中distinct一致

db.local.distinct()

5、 数组选择器

)单元素查询:db.local.find({'favorites.movies':'凹凸曼'})

)多元素查询:db.local.find({'favorites.movies':{'$all':['阿凡达', '泰坦尼克号']}})

)精准查找:db.local.find({'favorites.movies':['凹凸曼', '美队2', '喜羊羊与灰太狼']})

)索引查询(查找数组中第一个钢铁侠的喜欢电影):db.local.find({'favorites.movies.0':'钢铁侠'})

)数组子集:db.local.find({}, {'favorites.movies':{'$slice':[3,3], '_id':1}})

'$slice':[3,3]:跳过前3条数据并取3条数据

6、对象数组选择器

)单元素查询:db.local.find({'citys':{'code':0001, 'addr':'上海'}})

)多元素查询:db.local.find({'comments':{'$elemMatch':{'movies':'倩女幽魂', 'content':'好看!'}}})

demo:https://github.com/mrjdrs/mongodb-demo/tree/master/mongo-selector

MongoDB关联查询:

因mongo单个文档大小不能超过16M,但因特殊的业务场景我们又不得不这样存储,为了解决这一问题mongo提供了DBRef。

DBRef语法:

1、$ref:引用文档所在聚合名称。

2、$id:所在集合的id值。

3、$db:可选;集合所在库的实例名。

示例

db.collectionName.insert({"name":"zd", "userId":
{"$ref":"users", "$id":ObjectId("objectId value"), "$db":"dbName"}
})
db.collectionName.insert({"name":"zd", "userId":
[
{"$ref":"users", "$id":ObjectId("objectId value"), "$db":"dbName"},
{"$ref":"users", "$id":ObjectId("objectId value"), "$db":"dbName"},
]
}) db.collectionName.findOne({"name":"zd"}).userId.fetch()
db.collectionName.findOne({"name":"zd"}).userId[0].fetch()

MongoDB学习笔记(二、MongoDB查询)的更多相关文章

  1. Mongodb学习笔记二(Mongodb基本命令)

    第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...

  2. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  3. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  4. MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...

  5. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

  6. MongoDB学习笔记三:查询

    MongoDB中使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档,其形式也是一个文档,说明要执行的查询细节.空的查询 ...

  7. MongoDB学习笔记(一) MongoDB介绍及安装(摘)

    MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...

  8. MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用

    1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...

  9. MongoDB学习笔记~索引提高查询效率

    回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoD ...

  10. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...

随机推荐

  1. Linux日志中如何查找关键字及其前后的信息

    在日常工作中,我们经常需要查看日志,比如可以通过 tail 命令实时查看日志,也可以通过 cat 等命令查看日志信息. 但现在我们要讨论的是,如何从日志中通过关键字过滤出我们想要的内容,方法有多种,今 ...

  2. unity3D开发环境搭建

    前言 本文记录unity3D开发环境的搭建 unity安装 unity有中文官网(https://unity.cn/),很贴心,ide工具我们选择下载安装中国区增强版,下载地址:https://uni ...

  3. SpringBoot2.0整合WebSocket,实现后端数据实时推送!

    之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下. 一.什么是 ...

  4. PlayJava Day029

    1.Java Reflection:Reflection(反射)是被视为动态语言的关键 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性及 ...

  5. golang协程同步的几种方法

    目录 golang协程同步的几种方法 协程概念简要理解 为什么要做同步 协程的几种同步方法 Mutex channel WaitGroup golang协程同步的几种方法 本文简要介绍下go中协程的几 ...

  6. GC与内存分配策略

    一.GC 第一步:判断对象是否已死?有两种方法:第一种是引用计数法,即给对象添加一个引用计数器,当被引用时,计数器就+1:当引用失效时,就-1:当计数器为0时,代表对象没有被引用.但是计数器的缺点就是 ...

  7. JS---part2课程介绍+part1复习

    part1复习 JavaScript分三个部分: 1. ECMAScript标准----JS基本的语法 2. DOM:Document Object Model 文档对象模型 3. BOM:浏览器对象 ...

  8. 欢迎大家Follow me!微软MVP罗勇(Dynamics CRM方向2015-2018年)欢迎您!

    我是一名八零后,来自湖南乡村,2006年毕业于大连大学工商管理专业,主要靠自学走上了编程之路.从2012年开始接触Dynamics CRM 2011,一直从事Dynamics CRM方面工作,熟悉Dy ...

  9. find 常用命令

    系统中总会不断产生一些文件,比如日志文件,不一定会用到也不会自动删除,这时候就需要手动删除,当然也可以转存到其他目录下.不好找的时候可以用find模糊查找,加个job定时任务自动执行定期删除文件1.添 ...

  10. SQL Server如何通过Page_ID找到对应的表

    其实本篇文章算是翻译Finding a table name from a page ID这篇文章,只是不想直接翻译.用自己的理解叙说出来.算是对上一篇博客"SQL Server如何找出一个 ...