千家信息网

Mongo高级查询

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,1、条件操作符(1)条件操作符db.collection.find({ "field" : { $gt: value } } ); // 大于: field > valuedb.collection.
千家信息网最后更新 2025年11月12日Mongo高级查询

1、条件操作符


(1)条件操作符

db.collection.find({ "field" : { $gt: value } } ); // 大于: field > value

db.collection.find({ "field" : { $lt: value } } ); // 小于: field < value

db.collection.find({ "field" : { $gte: value } } ); // 大于等于: field >= value

db.collection.find({ "field" : { $lte: value } } ); // 小于等于: field <= value


(2)$all匹配所有

这个操作符跟SQL 语法的in 类似,但不同的是, in 只需满足( )内的某一个值即可, $all

须满足[ ]内的所有值,例如:

db.users.find({age : {$all : [6, 8]}});

可以查询出 {name: 'David', age: 26, age: [ 6, 8, 9 ] }

但查询不出 {name: 'David', age: 26, age: [ 6, 7, 9 ] }


(3)$exists判断字段在不在

查询所有存在age 字段的记录

db.users.find({age: {$exists: true}});

查询所有不存在name 字段的记录

db.users.find({name: {$exists: false}});


(4)Null值处理

Null不仅能找到自身而且还能找到不存在某个字段的值


(5)$mod取模运算

取模6为1的

> db.user.find()

{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }

{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }

{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

> db.user.find({age:{$mod:[6,1]}})

{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }

(5)$ne不等于

查询age 的值不等于7 的数据

> db.user.find({age:{$ne:6}})

{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }

{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }

> db.user.find({age:{$ne:7}})

{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }

{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }


(6)$in包含

查询age 的值在7,8 范围内的数据

> db.user.find({age:{$in:[7,8]}})

{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }

{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }


(7)min不包含

查询age 的值在7,8 范围外的数据

> db.user.find({age:{$nin:[7,8]}})

{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }


(8)$size数组元素个数

匹配db.users.find({favorite_number: {$size: 3}});

不匹配db.users.find({favorite_number: {$size: 2}});

> db.user.find({favorite_number:{$size:3}})

{ "_id" : ObjectId("579eee3d8aeb5abda0d54b5e"), "name" : "David", "age" : 26, "favorite_number" : [ 6, 7, 9 ] }

> db.user.find({favorite_number:{$size:2}})

>


(9)正则表达式匹配

查询name 不以T 开头的数据

db.user.find()

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

> db.user.find({name:{$not:/^T.*/}})

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

>


(10) Javascript查询和$where查询

查询a 大于3 的数据,下面的查询方法殊途同归

db.c1.find( { a : { $gt: 3 } } );

db.c1.find( { $where: "this.a > 3" } );

db.c1.find("this.a > 3");

f = function() { return this.a > 3; } db.c1.find(f);


(11)count查询记录条数

> db.user.find()

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

> db.user.find().count()

2

>


(12)skip限制返回记录的起点

查询user中的第2条数据

> db.user.find()

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

> db.user.find().skip(1).limit(1)

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

>


(13)sort排序

查询c1 表按age 升序排列

> db.user.find().sort({age:-1})

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

> db.user.find().sort({age:1})

{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }

>


(14)游标

for (var i=1;i<10;i++) db.user.insert( {"x" : i})


> for(var c=db.user.find();c.hasNext();){printjson(c.next());}

{ "_id" : ObjectId("579ef6198aeb5abda0d54b5f"), "x" : 1 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b60"), "x" : 2 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b61"), "x" : 3 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b62"), "x" : 4 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b63"), "x" : 5 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b64"), "x" : 6 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b65"), "x" : 7 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b66"), "x" : 8 }

{ "_id" : ObjectId("579ef6198aeb5abda0d54b67"), "x" : 9 }

>



查询 数据 字段 操作符 条件 范围 不同 殊途同归 个数 元素 升序 只需 开头 数组 方法 正则 游标 表达式 语法 起点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库什么时候用索引 数据库分析什么意思 为什么传说对决显示服务器错误 银行软件开发中心职责 ktv点歌系统显示未连接服务器 数据库索引建立格式 服务器cpu静音风扇 计算机网络技术读书报告 嘉定区软件开发费用 结构化方法软件开发的应用实例 教育网络安全专家 重庆亿宾网络技术有限公司 与数据库角色相比来说 服务器监控管理软件pum 华为服务器提示H02故障代码 自己搭建的服务器怎么连接域名 固原网络技术哪家强 未能通过查询本市家庭户口数据库 微信服务器终端聊天记录保存时间 浪潮服务器软raid设置 什么是value数据库 杭州聚视界网络技术有限公司 java软件开发日常 天津存储服务器机箱定制云服务器 结构化方法软件开发的应用实例 网络安全主长是谁 时序数据库网站 虚拟仿真软件开发方案 想学网络技术学什么 人装融合网络技术
0