mongodb的CRUD操作详解2-find
时间:2022-07-25
本文章向大家介绍mongodb的CRUD操作详解2-find,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
查询操作
比较运算符 |
英文 |
数学符号 |
---|---|---|
$lt |
Lower Than |
< |
$lte |
Lower Than or Euqal |
<= |
$gt |
Greater Than |
> |
$gte |
Greater Than or Equal |
>= |
$ne |
Not Equal |
!= |
逻辑运算符 |
含义 |
---|---|
$or |
或运算 |
$in |
元素 In 集合(数组) |
$nin |
元素 not In 集合(数组) |
$not |
取反 |
//查询集合内所有文档,pretty格式化查询结果
db.inventory.find( {} )
db.inventory.find()
db.inventory.find().pretty()
//等于条件查询
db.inventory.find( { item: "ABC1" } )
//查询符号查询
//https://docs.mongodb.org/manual/reference/operator/query
db.inventory.find( { item: { $in: [ 'ABC1', 'ABC2' ] } } )
//AND条件查询
db.inventory.find( { 'details.model': '14Q3', 'stock.qty': { $lt: 26} } )
//OR条件查询
db.inventory.find(
{
$or: [ { 'stock.qty': { $gt: 25} }, { price: { $lt: 6} } ]
}
)
//AND和OR组合查询
db.inventory.find(
{
category :'clothing',
$or: [ { 'stock.qty': { $gt: 25} }, { price: { $lt: 6} } ]
}
)
//嵌套文档查询producer属性值匹配
db.inventory.find(
{
stock:
{
size: 'M',
qty: 5
}
}
)
db.inventory.find( { 'stock.size': 'M' } )
嵌套属性的查询注意加上单引号
数组匹配查询
初始化数据
db.inventory.insert([{ _id: 5, type: "food", item: "aaa", ratings: [ 5, 8, 9 ] },
{ _id: 6, type: "food", item: "bbb", ratings: [ 5, 9 ] },
{ _id: 7, type: "food", item: "ccc", ratings: [ 9, 5, 8 ] }])
db.inventory.insert([{
_id: 100,
type: "food",
item: "xyz",
qty: 25,
price: 2.5,
ratings: [ 5, 8, 9 ],
memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
},
{
_id: 101,
type: "fruit",
item: "jkl",
qty: 10,
price: 4.25,
ratings: [ 5, 9 ],
memos: [ { memo: "on time", by: "payment" }, { memo: "delayed", by: "shipping" } ]
}])
数组查询
//数组精确匹配查询,数组元素个数,等值
db.inventory.find( { ratings: [ 5, 8, 9 ] } )
//数组ratings包含元素5的查询
db.inventory.find( { ratings: 5 } )
//数组ratings的地一个元素是5
db.inventory.find( { 'ratings.0': 5 } )
//数组ratings有一个元素大于5并且小于9,就匹配整条文档
db.inventory.find( { ratings: { $elemMatch: { $gt: 5, $lt: 9 } } } )
//数组ratings的每个元素都必须满足大于5*或*小于9,就返回整条文档
db.inventory.find( { ratings: { $gt: 5, $lt: 9 } } )
//数组memos的第一个嵌套对象的属性by匹配是shipping
db.inventory.find( { 'memos.0.by': 'shipping' } )
返回如下结果:
{
_id: 100,
type: "food",
item: "xyz",
qty: 25,
price: 2.5,
ratings: [ 5, 8, 9 ],
memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
}
//数组memos任意一个嵌套对象属性by匹配是shipping
db.inventory.find( { 'memos.by': 'shipping' } )
返回如下结果:
{
_id: 100,
type: "food",
item: "xyz",
qty: 25,
price: 2.5,
ratings: [ 5, 8, 9 ],
memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
}
{
_id: 101,
type: "fruit",
item: "jkl",
qty: 10,
price: 4.25,
ratings: [ 5, 9 ],
memos: [ { memo: "on time", by: "payment" }, { memo: "delayed", by: "shipping" } ]
}
//至少有一个memos嵌套对象同时匹配memo和by属性
db.inventory.find(
{
memos:
{
$elemMatch:
{
memo: 'on time',
by: 'shipping'
}
}
}
)
返回结果记录如下:
{
_id: 100,
type: "food",
item: "xyz",
qty: 25,
price: 2.5,
ratings: [ 5, 8, 9 ],
memos: [ { memo: "on time", by: "shipping" }, { memo: "approved", by: "billing" } ]
}
喜欢 (1)or分享 (0)
- Golang语言社区--LollipopGO开源项目搭建商城路由分发
- Shapes and line types for R
- Python基本常用包整理(data analysis and machine learning),附查询包版本语句
- 一次 PyTorch 的踩坑经历,以及如何避免梯度成为NaN
- 递归与伪递归区别,Python 实现递归与尾递归
- N元分词算法
- 基于典型相关分析的词向量
- 分享一波关于做 Kaggle 比赛,Jdata,天池的经验,看完我这篇就够了。
- system表空间不足的问题分析(r6笔记第66天)
- 挑战数据结构和算法面试题——最大间隔
- 一则orabbix报警的分析(r6笔记第65天)
- 中科院计算所开源深度文本匹配开源工具 MatchZoo
- 简单易学的机器学习算法——线性回归(1)
- 当主键碰到NULL(r6笔记第64天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- string- 43. Multiply Strings
- Array - 34. Find First and Last Position of Element in Sorted Array
- Array - 31. Next Permutation
- Docker快速部署一个属于你自己的博客
- golang实现BST和AVL
- golang实现跳表(SkipList)
- 一致性哈希的golang实现
- Array - 75. Sort Colors
- Array - 309. Best Time to Buy and Sell Stock with Cooldown
- Array - 55. Jump Game
- 【技术创作101训练营】超简单的公司Git+个人Git共存方式
- css高度坍塌与清除浮动
- 无缝切换在线升级的终极探索
- promise详解
- Vuex是怎样进行状态管理的