学习笔记☞ MongoDB(芒果数据库) ☞【查找,删除,操作符】

本文档详细介绍了MongoDB数据库的查询与删除操作。包括使用db.collectionName代表集合对象,find()函数及其参数field和query,findone()函数,各种操作符如$eq、$lt、$gt等,逻辑操作符$and、$or、$not,数组查找方法,以及其他辅助查询方法如$exists、$mod、$type等。同时,还涵盖了删除文档的操作。

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

1、db.collectionName   代表集合对象

    1、获取集合对象
        命令:
            db.getCollection('collection_name')
        示例:
            db.getCollection('class0').insert({name:'悟空',age:1700})

2、查找操作

    1、查找即合理的全部文档:

        db.collectionName.find()  ---相当于--->  SQL中select * from tableName

    2、find(query,field):

        功能:
            查找所有符合条件的文档
        参数:
            query:   筛选条件    相当于MySQL中where字句
            field:   展示的域    相当于MySQL中select展示部分
        返回:
            所有查找到的内容

    3、field参数:

        选择要展示的域 传一组键值对
        键:
            表示域名
        值:
            表示是否显示该域   0 表示不显示,1 表示显示
        总结:
            1、如果某个域给定0  则表示不显示该域,而其他的域均显示
                 如果某个域给定1  则表示显示该域,其他的域都不显示
            2、_id永远默认为显示,除非设置为0
            3、除_id外其他域 必须拥有相同是设置,全为0或者全为1
            4、如果不谢该参数则显示所有内容
        示例:
            db.class0.find({},{_id:0,name:1,age:1})

    4、query参数

        功能:
            以键值对的形式给出查找条件
        示例:
            # 查找年龄 17
            db.class0.find({age:17},{_id:0})
        注: 如果不写第一个参数则表示查找所有内容

    5、findone()函数

        功能参数和find() 完全相同,只是只返回第一条查找到的文档
        示例:
            db.class0.findOne({age:17},{_id:0})

    6、query的更多用法

        1、操作符
            使用$符号注明的一个特殊字符串,表示一定的含义
            示例:
                $lt:表示小于
        2、比较操作符
            1、$eq
                等于
                示例:db.class0.find({age:{$eq:17},{_id:0})
                     筛选年龄等于17的
                     等同于 db.class0.find({age:17},{_id:0})
            2、$lt
                小于 <
                示例:
                    db.class0.find({name:{$lt:'Tom'}},{_id:0})
                注:
                    MongoDB中字符串也可以比较大小
            3、$lte
                小于等于 <=
                示例:
                    db.class0.find({age:{$lte:17}},{_id:0})
            4、$gt
                大于 >
                示例:
                    db.class0.find({age:{$gt:17}},{_id:0})
            5、$gte
                大于等于 >=
                示例:
                    db.class0.find({age:{$gte:17}},{_id:0})
            6.$ne
                不等于 !=
                示例:
                    db.class0.find({age:{$ne:17}},{_id:0})
                注:如果一个文档没有这个age域则显示为不等于
            7、$in
                包含
                示例:
                    db.class0.find({age:{$in:[16,17,18,19]}},{_id:0})
            8、$nin
                不包含
                示例:
                    db.class0.find({age:{$nin:[16,17,18,19]}},{_id:0})
        3、逻辑操作符
            1、$and
                逻辑与
                示例:
                    1、年龄小于19并且性别为男
                        db.class0.find({age:{$lt:19},sex:'m'},{_id:0})
                    2、年龄小于19并且大于15
                        db.class0.find({age:{$lt:19,$gt:15}},{_id:0})
                    3、and 示例
                        db.class0.find({$and:[{age:16},{name:'Lucy'}]},{_id:0})

            2、$or
                逻辑或
                示例:
                    db.class0.find({$or:[{age:{$lt:22}},{name:'悟空'}]},{_id:0})

                    db.class0.find({$or:[{age:{$lt:18}},{age:{$gte:30}}]},{_id:0})
            3、$not
                逻辑非
                示例:
                    db.class0.find({age:{$not:{$eq:17}}},{_id:0})
            4、$nor
                既不也不
                表示列表集合中的条件都不具备
                示例:
                    db.class0.find({$nor:[{age:{$gt:18}},{sex:'m'}]},{_id:0})
                    年龄既不大于18也不是女的
            5、条件混合
                年龄小于20 或者 姓名为阿红 并且 性别为女
                db.class0.find({$and:[{$or:[{age:{$lt:20}},{name:'阿红'}]},{sex:'w'}]})

                年龄小于等于17 或者 (姓名大于Tom 并且 年龄大于100)
                db.class0.find({$or:[{age:{$lte:17}},{$and:[{name:{$gt:'Tom'}},{age:{$gt:100}}]}]})

    7、数组查找

        1、查看数组中包含某一项的
            示例:
                db.class1.find({hobby:'吃'},{_id:0})
                查找hobby中含有’吃‘的文档
        2、$all
            查找数组中同时包含多项的文档
            示例:
                db.class1.find({hobby:{$all:['拍电影','代言']}},{_id:0})
                查找hobby数组中既有拍电影,又有代言的文档
        3、$size
            查找数组元素个数为指定个数的文档
            示例:
                db.class1.find({hobby:{$size:3}},{_id:0})
                查找hobby数组中包含三项的文档
        4、数组切片显示
            $slice
                对数组切片显示
            示例:
                db.class1.find({hobby:{$size:3}},{_id:0,hobby:{$slice:2}})
                查找hobby数组中包含三项的文档,并显示hobby数组的前两项
                db.class1.find({hobby:{$size:3}},{_id:0,hobby:{$slice:[1,2]}})
                查找hobby数组中包含三项的文档,并跳过hobby数组的第一项显示hobby数组的后两项

    8、其他查找方法

        1、$exists
            判断一个域是否存在

            示例:
                db.class0.find({sex:{$exists:true}},{_id:0})
                查找存在sex域的文档
                db.class0.find({sex:{$exists:false}},{_id:0})
                查找不存在sex域的文档
                注:$exists的值为布尔类型
        2、$mod
            做除数余数查找
            示例:
                db.class0.find({age:{$mod:[2,1db.class0.distinct('age')]}},{_id:0})
                查找年龄是奇数的文档
                db.class0.find({age:{$mod:[3,0]}},{_id:0})
                查找年龄能被三整除的文档
        3、$type
            查找指定数据类型的文档
            示例:
                db.class0.find({age:{$type:1}},{_id:0})
                查找age是整形的文档
                db.class0.find({name:{$type:2}},{_id:0})
                查找name是字符串的文档
type类型对照
TypeNumberAliasNotes
Double1“double” 
String2“string” 
Object3“object” 
Array4“array” 
Binary data5“binData” 
Undefined6“undefined”Deprecated.
ObjectId7“objectId” 
Boolean8“bool” 
Date9“date”
Null10“null” 
Regular Expression11“regex” 
DBPointer12“dbPointer” 
JavaScript13“javascript” 
Symbol14“symbol”Deprecated.
JavaScript (with scope)15“javascriptWithScope” 
32-bit integer16“int” 
Timestamp17“timestamp” 
64-bit integer18“long” 
Decimal12819“decimal”New in version 3.4.
Min key-1“minKey” 
Max key-127“maxKey” 

    9、进一步信息筛选

        1、destinct()
            功能:
                查看一个集合中某个域值的覆盖范围
            示例:
                db.class0.distinct('age')
                查看集合中age域的值都有哪些

    10、对查找结果再操作

        1、pretty()
            功能:
                将查询结果格式化显示
            示例:
                db.class1.find().pretty()
        2、limit(n)
            功能:
                查询结果显示前n条
            示例
                db.class0.find().limit(3)
                查询结果显示前三条
        3、skip(n)
            功能:
                显示时跳过前n条
            示例:
                db.class0.find({},{_id:0}).skip(3)
                显示时跳过前三条
        4、count()
            功能:
                对查找结果计数统计
            示例:
                # 统计sex为m的文档数量
                db.class0.find({sex:'m'},{_id:0}).count()
        5、sort({键:1 / -1})
            功能:
                对查找结果排序
            参数:
                1   表示按升序排列
                -1  表示按降序排列
            示例:
                # 所有包含age的结果按age升序排列
                db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1})
            复合排序
                # 所有包含age的结果按age升序排列,如果age相同按那么降序排列
                db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1,name:-1})
        6、函数的连续使用
            示例:
                # 显示所有包含age的文档中age最小的3个
                db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1}).limit(3)

3、删除文档

    格式:
        db.collectionName.remove(query,justOne)
    功能:
        删除制定的文档
    参数:
        query :筛选要删除的文档,    类似MySQL中where字句
                用法同查找操作
        justOne : 布尔类型  默认为false    表示删除所有筛选数据
                           如果赋值为true    则表示删除第一条符合的文档
    示例:
        #删除不包含age的文档和age大于100的文档
            db.class0.remove({$or:[{age:{$exists:false}},{age:{$gt:100}}]})
        # 删除第一个符合条件的文档
            db.class0.remove({sex:{$exists:false}},true)
        # 删除所有的文档
            db.class1.remove({})


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值