253_Mongodb_增删改查_查find

网友投稿 447 2022-05-29

find() findone() 查询出符合条件的第一个文档(只返回第一个) db.inventory.findOne({"qty":100},{_id:0}) db.inventory.find({"qty":100}) query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返回的键。 1 显示此字段, 0 不显示此字段 {“_id”:0} 查询时返回文档中所有键值,只需省略该参数即可(默认省略) 需要以易读的方式来读取数据,可以使用 pretty() 方法;

查询操作符

操作符类型

运算符

描述

比较

$eq

$ne

等于

不等于

$lt

$lte

小于

小等于

253_Mongodb_增删改查_查find

$gt

$gte

大于

大等于

$in

$nin

判断元素是否在只读的集合范围内

判断元素是否不在指定的集合范围里

$all

判断数组中是否包含某几个元素,无关顺序

逻辑运算

$and

连接多个查询条件,查询的文档都要满足条件

$nor

连接多个查询条件,查询的文档都不满足条件 与and相反

$or

有一个条件成立则匹配

$not

只可用于一个查询条件, 查询出的文档不符合该条件

元素操作符

$exists

判断元素是否存在,

若为true, 表文档数据必须符合存在条件,

若为false,表示文档数据必须符合不存在条件

$type

依照字段的类型进行筛选

评估操作符号

$expr

对文档两个字段进行比较,今儿查询出符合条件

$mod

取余条件, 表查询出符合余数条件的文档

其他

.

内嵌 & 子文档匹配

$regex

正则表达式匹配含有相关条件的文档

采用 PCRE(perl compatible regular expression) 来支持正则表达式

#find & findone db.inventory.findOne({"item":"apple"},{_id:0}) db.inventory.find({"qty":"apple"}) db.inventory.findOne({"qty":100},{_id:0}) db.inventory.find({"qty":100}) // 内嵌文档多个字段匹配 // 下面两个语句查询效果不一样,因为查询的字段顺序不一样 db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } ) db.inventory.find( { size: { w: 21, h: 14, uom: "cm" } } ) // 数组查询 // 匹配确切的数组内容,包括元素顺序 db.inventory.find( { tags: ["blank", "red", "small"] } ) db.inventory.find( { tags: ["red", "blank"] } ) // 不考虑顺序和其他元素 db.inventory.find( { tags: { $all: ["red", "blank"] } } ) // length数组中至少有一个元素,满足$elemMatch的条件 db.inventory.find( { length: { $elemMatch: {$gte:30, $lt:80} } } ) // tags数组大小为3的记录 db.inventory.find( { "tags": { $size: 3 } } ) # 1 比较操作符 db.inventory.find({"tags": {$in: ["red", "big"] }}) db.inventory.find({"qty":{$lte:150}}) # 2 逻辑操作符 db.inventory.find({$and:[{"qty":{$lte:150}}, {"tags": {$in:["red", "big"]}}] }) db.inventory.find({"qty": {$not: {$lte: 100}}}) db.inventory.find({"item": {$not: {$eq: "orange"}}}) # 3 元素操作符 db.inventory.find().size() //15 db.inventory.find({"tags": {$exists:true}}).size() //8 db.inventory.find({"tags" : { $type : "array"}}) # 4 评估操作符 db.inventory.find({$expr: {$lt:["$字段1","$字段2"]}}) 查询字段1值小于字段字段2的文档

正则 {: { $regex: /pattern/, $options: “”} } {: { $regex: ‘pattern’, $options: “”} } {: { $regex: /pattern/ } } 参数说明 $regex: /pattern/ $regex: ‘pattern’ $regex 操作符后加上字符串,可对字符串进行模糊查询 可选参数 “i” 忽略大小写, “x” 表忽略空格 “m” 数据为多行(\n)时,任意一条符合即可 “s” 将多行数据视为一行(\n 视为字符) # 正则 #{ item: "postcard", qty: 45, tags: ["gray", "yellow", "green"], size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }, db.inventory.find({"item": {$regex: "card", $options: "i"}})

查询其他操作

映射 字段选择:db.inventory.find({},{'item':1}) 字段排除: db.inventory.find({},{'item':0}) 数组子元素选择:db.inventory.find({},{'tags':{'$slice':[1,2]},'tags':1}) $slice可以取两个元素数组,分别表 示跳过和限制的条数; 排序 sort():db.orders.find().sort({'orderTime':1,'price':1}) 1:升序 2:降序 跳过和限制 skip(n):跳过n条数据 limit(n):限制n条数据 e.g:db.orders.find().sort({'orderTime':-1}).limit(5).skip(5) 查询唯一值 distinct():查询指定字段的唯一值 e.g:db.users.distinct("age")

数据校验

# 数据校验 前提: 拥有collMod 操作权限 1 创建集合的方式(db.createcollecton) 通过添加validator, 从而在创建集合的时 建立验证规则 1.1 json schema验证模式 1.2 查询表达式验证模式 无论哪种方式都要加上 validationAction, 可以设定为error & warn error: 默认值 如果插入或更新违规,报错 warn: 如果插入/更新违规 告警

sonSchema db.createCollection("ProductAlex", { validator:{ $jasonschema: { bsonType: "object", required: ["name", "weight"], properties: {name: {bsontype: "string"}, weight: {bsontype: "int", minimum:10, maximum: 100}}, validationAction: "warn" }} })

批量操作动作

// 批量写入操作 // 准备数据 db.characters.insertMany([ { "_id" : 1, "char" : "Brisbane", "class" : "monk", "lvl" : 4 }, { "_id" : 2, "char" : "Eldon", "class" : "alchemist", "lvl" : 3 }, { "_id" : 3, "char" : "Meldane", "class" : "ranger", "lvl" : 3 } ]); // 批量操作动作 try { db.characters.bulkWrite( [ { insertOne : {"document" : {"_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4} } }, { insertOne : {"document" : { "_id" : 5, "char" : "Taeln", "class" : "fighter", "lvl" : 3} } }, { updateOne : { "filter" : { "char" : "Eldon" }, "update" : { $set : { "status" : "Critical Injury" } } } }, { deleteOne : { "filter" : { "char" : "Brisbane"} } }, { replaceOne : { "filter" : { "char" : "Meldane" }, "replacement" : { "char" : "Tanys", "class" : "oracle", "lvl" : 4 } } } ] ); } catch (e) { print(e); }

MongoDB 面向对象编程

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Office 2019高效办公三合一从入门到精通 : 视频自学版》 —3.6为文档添加页眉和页脚
下一篇:使用ABAP操作Excel的几种方法
相关文章