| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MongoDB学习(四) -> 正文阅读 |
|
[大数据]MongoDB学习(四) |
前言前言这一篇主要讲mongodb 的文档相关操作 一、Mongo 文档操作1.?文档增删改查
二、插入文档db.collection.insertOne() 将单个文档插入到集合中。 > db.student.insertOne({"name":"test", "age":23}); db.collection.insertMany()将多个文件插入集合中。 > db.student.insertMany([{"name":"test1","age":20}, {"name":"test2", "age":21}]); db.collection.insert()将单个文档或多个文档插入到集合中。 > db.student.insert([{"name":"test3","age":21}, {"name":"test4", "age":22}]); 三、更新文档案例使用insertMany集合 初始化集合数据: db.inventory.insertMany( [ 为了更新文档,MongoDB 提供了更新操作符(例如$set)来修改字段值。 要使用更新运算符,请将以下形式的更新文档传递给更新方法: { : { : , ... }, : { : , ... }, ... } 如果字段不存在,则某些更新操作符(例如$set)将创建该字段。 更新单个文档 db.inventory.updateOne( > db.inventory.findOne({item:"paper"}); ? 使用$set 运算符将 size.uom 字段的值更新为“ cm”,将状态字段的值更新为“ P”, ? 使用$currentDate 运算符将 lastModified 字段的值更新为当前日期。 如果 lastModified 字段不存在,则$currentDate 将创建该字段。? 更新多个文档 > ?db.inventory.updateMany( 使用$set 运算符将 size.uom 字段的值更新为“ in”,将状态字段的值更新为“ P”. 使用 $currentDate 运算符将 lastModified 字段的值更新为当前日期。如果 lastModified 字段 不存在,则$currentDate 将创建该字段。 更换文档 要替换_id 字段以外的文档的全部内容, 请将一个全新的文档作为第二个参数传递给 db.collection.replaceOne()。 当替换一个文档时,替换文档必须只包含字段/值对;即不包括更新操作符表达式。 替换文档可以具有与原始文档不同的字段。在替换文档中,由于_id 字段是不可变的,因此可以省 略_id 字段。但是,如果您确实包含_id 字段,则它必须与当前值具有相同的值。 下面的示例替换了 inventory 集合中的第一个文件,其中项为"paper": > ?db.inventory.replaceOne( 四、查询文档MongoDB 查询文档使用 find() 方法。find() 方法以非结构化的方式来显示所有文档。 MongoDB 查询数据的语法格式如下: db.collection.find(query, projection) ? query :可选,使用查询操作符指定查询条件 ? projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该 参数即可(默认省略)。 > db.inventory.findOne({item:"paper"}, {_id:0,item:1,instock:1}); 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法。 db.demo.find() 返回数据时,每一条会占取一行,不便于阅读;而使用 db.find().pretty()方法时显示美 观,便于阅读。 除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。 重新初始化inventory集合 db.inventory.remove({}); db.inventory.insertMany([ 选择集合中的所有文档 要选择集合中的所有文档,请将空文档作为查询过滤器参数传递给 find 方法。 查询 过滤器参数确定选择条件: db.inventory.find( {} ) 此操作对应于以下 SQL 语句: SELECT * FROM inventory 指定平等条件 要指定相等条件,请在查询筛选文档使用:表达式: { <field1>:<value1>,...?} 下面的示例从 inventory 中选择状态等于" D"的所有文档: db.inventory.find( { status: "D" }).pretty(); SELECT * FROM inventory WHERE status = "D" 使用查询运算符指定条件 or 查询过滤器文档可以使用查询运算符以以下形式指定条件: {<field1>:{<operator1>:<value1>},...} 下面的例子从状态等于" A"或" D"的 inventory 集合中检索所有文档: db.inventory.find({status:{$in:["A","D"]}}).pretty(); Note:尽管可以使用$or 操作符表示此查询,但在对同一字段执行相等性检查时,请 使用 $in 操作符而不是$or 操作符。 该操作对应于以下 SQL 语句: SELECT * FROM inventory WHERE status in ("A", "D") 指定和条件 and 复合查询可以为集合文档中的多个字段指定条件。逻辑和连词隐式地连接复合查询的 子句,以便查询在集合中选择符合所有条件的文档。 下面的示例 inventory 状态为"A"且数量小于($lt) 30 的库存集合中的所有文档: db.inventory.find( { status: "A", qty: { $lt: 30 } } ).pretty(); 该操作对应于以下 SQL 语句: SELECT * FROM inventory WHERE status = "A" AND qty < 30 指定或条件 使用$or 操作符,可以指定一个复合查询,用逻辑 OR 连词连接每个子句,以便查询在 集合中选择至少匹配一个条件的文档。 下面的示例 status 状态为“A”或 qty 小于($lt)30 的集合中的所有文档: db.inventory.find({$or:[{status:"A"},{qty:{$lt:30}}]}).pretty(); 该操作对应于以下 SQL 语句: SELECT * FROM inventory WHERE status = "A" OR qty < 30 指定和以及或条件 在下面的例子中,复合查询文档选择状态为“A”且 qty 小于($lt) 30 或 item 以字符 p 开头的集合中的所有文档: db.inventory.find({status:"A",$or:[{qty:{$lt:30}},{item:/^p/}]}).pretty(); 该操作对应于以下 SQL 语句: SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%") MongoDB 支持正则表达式$regex 查询来执行字符串模式匹配。 $type 操作符 类型匹配用。 $type 操作符是基于 BSON 类型来检 索集合中匹配的数据类型,并返回结果。MongoDB 中可以使用的类型如下表所示:
MongoDB 操作符 - $type 实例 查询inventory中item为String的数据 > db.inventory.insertOne({"item":1}); MongoDB Limit,Skip,Sort MongoDB Limit() 方法 如果你需要在 MongoDB 中读取指定数量的数据记录,可以使用 MongoDB 的 Limit 方法,limit()方法 接受一个数字参数,该参数指定从 MongoDB 中读取的记录条数。 limit()方法基本语法如下所示: >db.COLLECTION_NAME.find().limit(NUMBER) 例如 > db.inventory.find().limit(1); MongoDB Skip() 方法 我们除了可以使用 limit()方法来读取指定数量的数据外,还可以使用 skip()方法来跳过指定数量的数 据,skip 方法同样接受一个数字参数作为跳过的记录条数。 skip() 方法脚本语法格式如下: > db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) > db.inventory.find().limit(3).skip(2); MongoDB sort() 方法 在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使 用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。 > db.inventory.find().sort({qty:1}); MongoDB 条件语句查询与 RDBMS Where 语句比
附加查询教程 ? Query on Embedded/Nested Documents note: db.collection.findOne()方法还执行读取操作以返回单个文档。在内部, db.collection.findOne()方法是 db.collection.find() 方法,限制为 1 (db.inventory.find( {} ).limit(1))。 五、删除文档MongoDB remove()函数是用来移除集合中的数据。MongoDB 数 据更新可以使用 update()函数。在执行 remove()函数前先执行 find()命令来判断执行的条件是否正确, 这是一个比较好的习惯。 语法格式如下: db.collection.remove( , { justOne: , writeConcern: } ) 参数说明: ? query :(可选)删除的文档的条件。 ? justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 fal se,则删除所有匹配条件的文档。 ? writeConcern :(可选)抛出异常的级别。 删除item 是paper的文档 > db.inventory.remove({item:"paper"}); 如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令): db.inventory.remove({}); 重新初始化inventory集合 db.inventory.deleteMany({}); db.inventory.insertMany( [ 删除所有文档 db.inventory.deleteMany({}); 删除所有符合条件的文档 您可以指定标准或过滤器,以标识要删除的文档。 filter 使用与读取操作相同的语 法。 要指定相等条件,请在查询过滤器文档:中使用<field>:<value>表达式: {<field1>:<value1>,...} 查询过滤器文档可以使用查询操作符 以以下形式指定条件: {<field1>:{<operator1>:<valu1>},...} 要删除所有符合删除条件的文档,请将 filter 参数传递给 deleteMany()方法。 以下示例从状态字段等于“ A”的 inventory 集合中删除所有文档: db.inventory.deleteMany({ status : "A" }) 仅删除一个符合条件的文档 要删除最多一个与指定过滤器匹配的文档(即使多个文档可以与指定过滤器匹配),请 使用 db.collection.deleteOne()方法。 下面的示例删除状态为“ D”的第一个文档: db.inventory.deleteOne( { status: "D" } ) 删除行为 索引 即使从集合中删除所有文档,删除操作也不会删除索引。 原子性 MongoDB 中的所有写操作都是单个文档级别的原子操作。 总结学习了mongodb的文档相关操作 ??技术参考 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 13:23:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |