Java-146 深入浅出 MongoDB 数据插入、批量写入、BSON 格式与逻辑查询and or not管理指南

news/2025/11/9 8:46:06/文章来源:https://www.cnblogs.com/tlnshuju/p/19203603

Java-146 深入浅出 MongoDB 数据插入、批量写入、BSON 格式与逻辑查询and or not管理指南

2025-11-09 08:40  tlnshuju  阅读(0)  评论(0)    收藏  举报

点一下关注吧!!!非常感谢!!持续更新!!!

AI篇持续更新中!(长期更新)

AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布!“快的模型 + 深度思考模型 + 实时路由”,持续打造实用AI工具指南!

Java篇正式开启!(300篇)

目前2025年10月07日更新到:
Java-141 深入浅出 MySQL Spring事务失效的常见场景与解决方案详解(3)
MyBatis 已完结,Spring 已完结,Nginx已完结,Tomcat已完结,分布式服务正在更新!深入浅出助你打牢基础!

大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!
大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

请添加图片描述

数据操作

数据添加

单条数据插入操作

MongoDB提供了insertOne()方法来插入单条文档数据。该方法接收一个文档对象作为参数,将其插入到指定集合中。

db.collection.insertOne(
{
name: "John Doe",
age: 30,
email: "john@example.com",
address: {
city: "New York",
zip: "10001"
},
hobbies: ["reading", "hiking"]
}
)

文档数据结构

MongoDB文档采用类似JSON的结构,但使用更丰富的BSON格式。文档由字段和值对组成,支持以下数据类型:

  • 基本类型:字符串、数值、布尔值
  • 复杂类型:数组、嵌套文档
  • 特殊类型:日期、ObjectId、二进制数据等

示例文档结构:

{
"_id": ObjectId("507f191e810c19729de860ea"),
"username": "johndoe",
"created_at": ISODate("2023-01-15T10:30:00Z"),
"scores": [85, 92, 78],
"profile": {
"firstName": "John",
"lastName": "Doe"
}
}

BSON格式详解

BSON(Binary JSON)是MongoDB使用的二进制编码格式,具有以下特点:

  1. 效率更高:二进制格式比文本格式解析更快
  2. 数据类型更丰富:支持日期、二进制数据等额外类型
  3. 可遍历性:BSON文档包含长度前缀,便于快速扫描

BSON与JSON的主要区别:

  • BSON支持二进制数据,JSON不支持
  • BSON有特定的日期类型,JSON用字符串表示日期
  • BSON文档包含元数据,如字段长度信息

实际应用场景

  1. 用户资料存储
db.users.insertOne({
username: "alice123",
preferences: {
theme: "dark",
notifications: true
},
last_login: new Date()
})
  1. 产品目录
db.products.insertOne({
name: "Laptop",
price: 999.99,
tags: ["electronics", "computers"],
inventory: {
warehouse1: 15,
warehouse2: 8
}
})

注意:当插入文档时,如果未指定_id字段,MongoDB会自动生成一个唯一的ObjectId作为该文档的标识符。

db.wzk.insert("hellworld!");

在这里插入图片描述

批量添加

在 MongoDB 中,insert 操作不仅支持单条文档插入,还可以进行批量 BSON 文档的添加。批量插入可以显著提高数据插入效率,特别是在需要插入大量数据时。以下是几种常见的批量插入方式:

  1. 数组批量插入
db.collection.insert([
{name: "文档1", value: 100},
{name: "文档2", value: 200},
{name: "文档3", value: 300}
])
  1. 使用 insertMany 方法
db.collection.insertMany([
{_id: 1, title: "文章A"},
{_id: 2, title: "文章B"},
{_id: 3, title: "文章C"}
])
  1. 批量插入的配置选项
db.collection.insertMany(
[...], // 文档数组
{
ordered: false, // 是否按顺序执行
writeConcern: {...} // 写入关注级别
}
)

批量插入的应用场景包括:

  • 初始化数据库时导入大量初始数据
  • 从其他数据源迁移数据到 MongoDB
  • 执行批量数据处理任务
  • 日志系统大量写入日志记录

注意事项:

  1. 批量插入默认是原子性的,要么全部成功,要么全部失败
  2. 可以通过 ordered 参数控制是否按顺序执行
  3. 大批量插入时建议分批进行,避免超时
  4. 插入前确保文档结构符合集合的模式要求
db.wzk.insert(["hello!", "world!"])

在这里插入图片描述

数据查询

MongoDB提供了丰富的查询操作符来实现各种条件查询,主要包括以下几类:

比较操作符

  1. 等于($eq)

  2. 不等于($ne)

  3. 大于($gt)

  4. 大于等于($gte)

  5. 小于($lt)

  6. 小于等于($lte)

组合查询

可以使用逻辑操作符组合多个条件:

  • $and:同时满足多个条件
    • 示例:db.collection.find({$and: [{age: {$gt: 20}}, {age: {$lt: 30}}]})
  • $or:满足任意一个条件
    • 示例:db.collection.find({$or: [{age: {$lt: 20}}, {age: {$gt: 30}}]})

使用场景

  1. 范围查询:查找年龄在20-30岁之间的用户
    • db.users.find({age: {$gte: 20, $lte: 30}})
  2. 排除特定值:查找所有不是VIP的用户
    • db.users.find({vip: {$ne: true}})
  3. 组合条件:查找年龄大于25岁或者收入低于5000的用户
    • db.users.find({$or: [{age: {$gt: 25}}, {income: {$lt: 5000}}]})

这些查询操作可以结合索引使用以提高查询效率,特别是在处理大量数据时,合理的查询条件和索引设计能显著提升查询性能。

db.wzk.find(条件)
在这里插入图片描述
比如我最简单的查询

db.wzk.find({'0': 'h'});

在这里插入图片描述

逻辑查询

and条件查询详解

在MongoDB中,使用逗号分隔多个查询条件时,默认执行的是逻辑AND操作。这表示查询结果必须同时满足所有指定条件才会被返回。

基本语法
db.collection.find({
key1: value1,
key2: value2
}).pretty()
实际应用示例
  1. 查询用户集合中年龄为25岁且职业为"程序员"的文档:
db.users.find({
age: 25,
profession: "程序员"
}).pretty()
  1. 查询订单集合中状态为"已完成"且总金额大于1000的订单:
db.orders.find({
status: "已完成",
total: {$gt: 1000}
}).pretty()
注意事项
  • 当字段值为数组时,AND查询要求数组必须包含所有指定元素
  • 可以组合使用不同类型的查询条件(等于、范围、正则等)
  • 对于嵌套文档,可以使用点表示法进行AND查询
性能优化建议
扩展说明

除了使用逗号分隔的隐式AND,也可以显式使用$and操作符:

db.collection.find({
$and: [
{key1: value1},
{key2: value2}
]
})

显式and通常在需要组合or等复杂查询时使用,或者在同一个字段上需要多个条件时特别有用。

这里使用多个条件:

db.wzk.find({ '0': 'h', '1': 'e'}).pretty();

在这里插入图片描述

or条件

db.wzk.find($or:[{key1:value1, key2:value2}]).pretty()
db.wzk.find({$or: [{'0': 'h'}, {'0': 'x'}]}).pretty();

在这里插入图片描述

not条件

$not是MongoDB中的一个逻辑查询操作符,用于对指定条件取反。它通常与其他查询操作符配合使用,可以构建更复杂的查询条件。

基本语法
db.collection.find({field: {$not: {operator: value}}}).pretty()
详细说明
  1. $not会对后面的查询条件取反
  2. 可以配合各种操作符使用,如:
    • $eq(等于)
    • $gt(大于)
    • $lt(小于)
    • $regex(正则表达式)等
示例
  1. 查询年龄不等于25的用户:
db.users.find({age: {$not: {$eq: 25}}}).pretty()
  1. 查询名字不以"J"开头的用户(使用正则表达式):
db.users.find({name: {$not: {$regex: "^J"}}}).pretty()
  1. 查询成绩不在80-100之间的学生:
db.students.find({score: {$not: {$gt: 80, $lt: 100}}}).pretty()
注意事项
  1. $not操作符可能会导致查询性能下降,因为它需要扫描更多的文档
  2. 在使用正则表达式时,$not会匹配不符合该模式的所有文档
  3. 对于简单的等于判断,直接使用$ne操作符通常效率更高
应用场景
db.wzk.find({'0': {$not: { $eq: 'h'}}});

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年知名的团餐配送最新用户口碑榜品牌

2025年知名的团餐配送最新用户口碑榜品牌行业背景与市场趋势随着中国城市化进程加速和企事业单位后勤社会化改革的深入,团餐行业近年来呈现出蓬勃发展的态势。据中国饭店协会发布的《2024年中国团餐行业发展报告》显示…

2025年石棉橡胶板厂家联系电话推荐:华北货源一站汇总

在工业设备维护、管道密封、化工防腐等场景中,石棉橡胶板因其耐高温、耐油、耐酸碱的特性被广泛应用。2025年,随着国内大型基建项目陆续开工,市场对高品质石棉橡胶板的需求持续升温。很多采购经理、设备工程师和备件…

2025年诈骗辩护律师联系电话推荐:资深律师亲办案例

当亲友突然被卷入诈骗案件,手机被扣、账户被冻、自由受限,家属最常问的一句话是:“现在找谁才能把人先保出来?”2025年,刑事司法流程对电子数据审查更严,量刑算法更细,留给辩护的黄金时间被压缩到72小时以内。早…

why bad is b

because a poor educated English think British is as bad as badman

2025年靠谱的目视化规划施工最新畅销推荐榜供应商

2025年靠谱的目视化规划施工最新畅销推荐榜供应商目视化规划行业背景与市场趋势随着制造业数字化转型加速,目视化管理作为精益生产的重要组成部分,正在经历前所未有的发展机遇。根据《2024-2029年中国工业视觉管理市…

2025年口碑好的澳洲海外仓头程亚马逊FBA海外仓榜

2025年口碑好的澳洲海外仓头程亚马逊FBA海外仓榜行业背景与市场趋势随着全球跨境电商的蓬勃发展,澳洲市场已成为中国卖家的重要战略布局地。根据Statista最新数据显示,2024年澳洲电商市场规模已达520亿澳元,预计202…

2025年上海血管瘤医院联系电话推荐:五院直通高效就诊

在上海这样一座超大型城市,血管瘤患者及家属常常面临“信息过载”的困扰:网络搜索结果五花八门,广告与科普混杂,真假难辨;社交平台上的“过来人”经验又常常带有强烈个体色彩,难以复制。为了把宝贵时间用在刀刃上…

2025年热门的企业VI设计创意视觉识别方案榜

2025年热门的企业VI设计创意视觉识别方案榜行业背景与市场趋势在品牌竞争日益激烈的商业环境中,企业视觉识别系统(VIS)已从简单的视觉包装升维为企业战略的核心组成部分。根据国际品牌协会(IBF)最新发布的《2024全球…

2025年热门的低盐涪陵榨菜传统美食品牌实力榜

2025年热门的低盐涪陵榨菜传统美食品牌实力榜开篇:行业背景与市场趋势涪陵榨菜作为中国传统美食的代表之一,已有百年历史。近年来,随着消费者健康意识的提升,低盐、低钠榨菜产品逐渐成为市场主流。据中国食品工业协…

2025年上海血管瘤医院联系电话推荐:浦东到静安全覆盖

在2025年,血管瘤患者及家属对“靠谱、就近、能马上联系上”的需求比以往任何时候都迫切。上海作为医疗资源高地,专科机构众多,但信息分散、电话难打通、院区搬迁等状况常让人跑冤枉路。为节省大家的时间与精力,我们…

2025年上海血管瘤医院联系电话推荐:精选五强榜单与就诊指南

在上海这样医疗资源高度集中的城市,血管瘤患者及家属往往面临“信息过载”:网络搜索结果庞杂、广告与科普混杂、同一家医院在不同平台留下的电话甚至不一致。为了帮大家把真正专业、可预约、可咨询的通道一次整理到位…

完整教程:SAP中的第三方销售与单独采购业务详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年优质的云南房屋加固选购指南

2025年优质的云南房屋加固选购指南 行业背景与市场趋势 随着城市化进程的加快和既有建筑的老化,房屋加固改造行业在云南市场迎来快速发展。据云南省住建厅2024年统计数据显示,全省现有建筑存量超过50亿平方米,其中…

2025年可靠的房屋检测鉴定TOP机构排行榜

2025年可靠的房屋检测鉴定TOP机构排行榜行业背景与市场趋势随着我国城镇化进程的加快和既有建筑存量的持续增长,房屋检测鉴定行业迎来了快速发展期。据中国建筑科学研究院发布的《2024年中国建筑检测行业发展报告》显…

2025年质量好的宜昌珍珠棉厂家推荐及选择指南

2025年质量好的宜昌珍珠棉厂家推荐及选择指南行业背景与市场趋势珍珠棉(EPE)作为一种新型环保包装材料,近年来在包装行业中的市场份额持续增长。根据中国包装联合会最新数据显示,2024年全国珍珠棉市场规模已达320亿…

详细介绍:YouTubeDNN GEO优化+Create大模型:喂养调优训练策略

详细介绍:YouTubeDNN GEO优化+Create大模型:喂养调优训练策略pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

2025年评价高的设计师三段力缓冲铰链厂家最新推荐排行榜

2025年评价高的设计师三段力缓冲铰链厂家最新推荐排行榜行业背景与市场趋势随着现代家居设计对功能性与美学的双重追求,五金配件尤其是铰链产品的技术革新已成为行业焦点。据《2024-2025中国家居五金行业白皮书》显示…

2025年11月面部提升医美机构优选榜:五家综合评测排行

站在镜子前,你轻轻把鬓角向后推,那一刻“松垮下垂”被瞬间拉紧——这正是大多数30-55岁求美者走进医美机构前的共同动作。面部提升需求往往集中在三类场景:一是婚礼、求职、直播上镜前的“速效紧致”;二是35岁后面…

2025年比较好的资源教室器材行业内知名厂家排行榜

2025年资源教室器材行业内知名厂家排行榜行业背景与市场趋势随着我国特殊教育事业的快速发展以及"十四五"规划对教育公平的持续强调,资源教室作为融合教育的重要载体,其器材设备市场迎来了前所未有的发展机…

2025年11月面部提升医美机构权威榜:北京领医领衔五强对比评测

站在镜子前,你轻轻把下颌线往上推,那一刻的紧致让人心动,却也被“松垮”拉回现实。30岁到55岁的女性,最常搜索的疑问是“面部提升到底选哪家”“拉皮和埋线哪个维持久”“会不会脸僵”。需求背后,是“想自然、想持…