征服 Mongodb 之 Modifier增强

本文介绍了MongoDB中多种查询条件的应用,包括逻辑运算符$or、$not,范围查询$lt、$gt、$lte、$gte,以及多值查询$in、$nin等。通过实例演示如何使用这些关键字进行高效灵活的数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过find/findOne做了简单查询,恍惚间发觉好像少点什么,似乎过于简单。这里做个补充,简单说说各种$的关键字:$lt、$gt、$lte、$gte等等。

发现自己又给自己挖了个坑,又深又广,需要早点跳出来喘口气。保密

 

 

集群配置相关链接:

征服 Mongodb 之 安装与系统服务配置

征服 Mongodb 之 主从复制&集群复制

 

基本操作相关链接:

征服 Mongodb 之 常用命令、基本数据类型  

征服 Mongodb 之 Modifier初识

征服 Mongodb 之 Modifier增强

征服 Mongodb 之 CRUD

    我感觉似乎被这本书(《MongoDB权威指南》) 绕进去了,如果按照书上这么拆分,很容易把这些MongoDB的Modifier当作是只有Update才特有的部分。

 

    一、“或”

  •  $or

   有关于“且”关系的查询,详见“CRUD”那一篇,这里单说OR查询。

 

> db.user.findOne({"$or" :[{"age" : 30},{"uid" : "u1234567890"}]})
{
        "_class" : "org.zlex.mongodb.domain.User",
        "_id" : ObjectId("50fe4f627252799620eee0db"),
        "address" : "上海",
        "age" : 30,
        "email" : [
                "snowolf@sina.com",
                "snowolf@sohu.com",
                "snowolf@yahoo.com",
                "snowolf@baidu.com"
        ],
        "uid" : "u1234567890"
}

    {"age" : 30},{"uid" : "u1234567890"} 满足条件其一。

 

    

  • $not
> db.user.findOne({"age" : {"$not":{"$gt":40}}})
{
        "_class" : "org.zlex.mongodb.domain.User",
        "_id" : ObjectId("50fe4f627252799620eee0db"),
        "address" : "上海",
        "age" : 30,
        "email" : [
                "snowolf@sina.com",
                "snowolf@sohu.com",
                "snowolf@yahoo.com",
                "snowolf@baidu.com"
        ],
        "uid" : "u1234567890"
}

    age不大于40的数据检索

 

    二、“范围”

  • $lt、$gt、$lte、$gte

     这里指的是$lt、$gt、$lte、$gte这些稀奇古怪的标识符的特有用途。其实只要对XML格式熟悉,对这些缩写应该并不陌生。$lt、$gt、$lte、$gte与之对应的数学符号是<、>、<=、>=。

 

> db.user.findOne({"age" : {"$gte":20,"$lte":50}})
{
        "_class" : "org.zlex.mongodb.domain.User",
        "_id" : ObjectId("50fe4f627252799620eee0db"),
        "address" : "上海",
        "age" : 30,
        "email" : [
                "snowolf@sina.com",
                "snowolf@sohu.com",
                "snowolf@yahoo.com",
                "snowolf@baidu.com"
        ],
        "uid" : "u1234567890"
}

 

 

    等同于:  where age >= 20 and age <= 50

 

  • $in、$nin

    如果想查询一个键的多个值,可以用$in

 

> db.user.findOne({"email" : {"$in":["snowolf@sina.com","snowolf@baidu.com"]}})
{
        "_class" : "org.zlex.mongodb.domain.User",
        "_id" : ObjectId("50fe4f627252799620eee0db"),
        "address" : "上海",
        "age" : 30,
        "email" : [
                "snowolf@sina.com",
                "snowolf@sohu.com",
                "snowolf@yahoo.com",
                "snowolf@baidu.com"
        ],
        "uid" : "u1234567890"
}

    与之相反的是$nin

 

 

> db.user.findOne({"email" : {"$nin":["snowolf@163.com","snowolf@qq.com"]}})
{
        "_class" : "org.zlex.mongodb.domain.User",
        "_id" : ObjectId("50fe4f627252799620eee0db"),
        "address" : "上海",
        "age" : 30,
        "email" : [
                "snowolf@sina.com",
                "snowolf@sohu.com",
                "snowolf@yahoo.com",
                "snowolf@baidu.com"
        ],
        "uid" : "u1234567890"
}

  

   OK,本次突击任务基本完成。眨眼

   有关Modifier标识符,详见http://cn.docs.mongodb.org/manual/reference/operator/

 

 

 

 

集群配置相关链接:

征服 Mongodb 之 安装与系统服务配置

征服 Mongodb 之 主从复制&集群复制

 

基本操作相关链接:

征服 Mongodb 之 常用命令、基本数据类型  

征服 Mongodb 之 Modifier初识

征服 Mongodb 之 Modifier增强

征服 Mongodb 之 CRUD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值