MongoDB学习笔记(二、MongoDB查询)
目录:
- 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查询)的更多相关文章
- Mongodb学习笔记二(Mongodb基本命令)
第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- MongoDB学习笔记三:查询
MongoDB中使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档,其形式也是一个文档,说明要执行的查询细节.空的查询 ...
- MongoDB学习笔记(一) MongoDB介绍及安装(摘)
MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...
- MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用
1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...
- MongoDB学习笔记~索引提高查询效率
回到目录 索引这个东西大家不会陌生,只要接触到稍微大一点的数据,都会用到这东西,它可以提升查询的速度,相当代价就是占用了更多的存储空间,这也是正常的,符合“能量守恒定理”,哈哈!今天说的是MongoD ...
- MongoDB学习笔记二:创建、更新及删除文档
插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...
随机推荐
- Flask 模板语言,装饰器
Jinja2模板语言 # -*- coding: utf-8 -*- from flask import Flask, render_template, request, redirect, ...
- 系统架构师考试知识点mp3资料免费下载
场景 系统架构设计师考试,属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个高级考试. 系统架构设计师考试,考试不设学历与资历条件,不论年龄和专业,考生可根据自己的技术水平,选 ...
- delphi使用Chilkat 组件和库从SFTP下载文件
官网地址:https://www.example-code.com/delphiDll/default.asp 实例代码:(不包括全局解锁) 密码生成器:https://www.cnblogs.co ...
- MyBatis映射文件 相关操作
一.MyBatis映射文件 1.简介 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行 ...
- 三、VUE项目BaseCms系列文章:axios 的封装
项目开发中 ajax 是不可缺少的,一个好的封装可以减少我们很多的重复代码,维护也更方便.在 vue 开发中我们用的比较多的就是 axios.下面代码是项目中用到的 axios 的封装. http.j ...
- windows重装系统后grub引导菜单修复方法(亲自实验过)
问题: 电脑安装的是windows7+ubuntu 15.10双系统.windows重装后,grub引导界面消失. 解决方法有两大步: 1.进入ubuntu; 2.在ubuntu中修复grub. 一. ...
- tensorflow 性能调优相关
如何进行优化tensorflow 将极大得加速机器学习模型的训练的时间,下面是一下tensorflow性能调优相关的阅读链接: tensorflow 性能调优:http://d0evi1.com/te ...
- JavaScript-----13.内置对象 Math()和Date()
1. 内置对象 js对象分为3种:自定义对象(var obj={}).内置对象.浏览器对象. 前两种对象是js基础内容,属于ECMAScript,第三个浏览器对象是js独有的.讲js API的时候会讲 ...
- 第04组 Beta冲刺(1/4)
队名:斗地组 组长博客:地址 作业博客:Beta冲刺(1/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.分配展示任务 2.收集各个组员的进度 3.写博客 展示GitHub当日代码/文档 ...
- swoole为什么不能代替nginx
Swoole不能代替Apache和Nginx这些通用的HTTP服务器. 但基于Swoole开发的PHP应用不依赖Apache和Nginx也能提供生产级别的HTTP服务. 有需要学习交流的友人请加入交流 ...