MongoDB笔记(四) 查询操作(详细)

查询操作(详细)

        1.查询集合所有文档

2.等值条件查询

3.嵌套文档查询

4.数组查询

5.查找null值字段,查找指定无值字段

6.或条件查找

7.查询操作符

8.正则表达式

9.区间查询


1.查询集合所有文档

db.goodstest.find()         //goodstest:collection name
db.goodstest.find().pretty()
> db.goodstest.find()
{ "_id" : ObjectId("60744b754a2bf7c4568674b5"), "name" : "《C语言》", "price" : 33.2, "adddate" : "2020-10-1", "allow" : true, "baseinf" : { "ISBN" : 1838388, "press" : "清华大学出版社" }, "tags" : [ "good", "book", "it", "program" ] }
{ "_id" : ObjectId("60744d964a2bf7c4568674b8"), "name" : "《c program》", "price" : 45 }
{ "_id" : 2222, "toy" : null }
{ "_id" : 1112 }
> db.goodstest.find().pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}
{ "_id" : 2222, "toy" : null }
{ "_id" : 1112 }

2.等值条件查询

> db.goodstest.find({name:"《c program》"})
{ "_id" : ObjectId("60744d964a2bf7c4568674b8"), "name" : "《c program》", "price" : 45 }
> db.goodstest.find(
... {name:"《c program》"},
... {name:1,price:1,_id:0}         //1表示显示,0表示不显示
... )
{ "name" : "《c program》", "price" : 45 }

3.嵌套文档查询

> db.goodstest.find({"baseinf.press":"清华大学出版社"})
{ "_id" : ObjectId("60744b754a2bf7c4568674b5"), "name" : "《C语言》", "price" : 33.2, "adddate" : "2020-10-1", "allow" : true, "baseinf" : { "ISBN" : 1838388, "press" : "清华大学出版社" }, "tags" : [ "good", "book", "it", "program" ] }
> db.goodstest.find({baseinf.press:"清华大学出版社"})
2021-04-12T22:38:00.826+0800 E QUERY    [thread1] SyntaxError: missing : after property id @(shell):1:26                 //注意baseinf.press要加双引号

4.数组查询

> db.goodstest.find({tags:["good","book","it","program"]}).pretty()
> db.goodstest.find({tags:"good"}).pretty()
> db.goodstest.find({tags:{$size:4}}).pretty()
> db.goodstest.find({tags:["good","book","it","program"]}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
> db.goodstest.find({tags:"good"}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
> db.goodstest.find({tags:{$size:4}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}

5.查找null值字段,查找指定无值字段

> db.goodstest.find({_id:2222,toy:null})
{ "_id" : 2222, "toy" : null }
> db.goodstest.find({_id:1112,toy:{$exists:false}})
{ "_id" : 1112 }

6.或条件查找

> db.goodstest.find({price:{$in:[33,33.2]}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}

7.查询操作符

小于和小于等于(<和<=):

> db.goodstest.find({price:{$lt:45}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
> db.goodstest.find({price:{$lte:45}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}

大于和大于等于(>和>=):

> db.goodstest.find({price:{$gt:33.2}}).pretty()
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}
> db.goodstest.find({price:{$gte:33.2}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}

不等于(!=):

> db.goodstest.find({price:{$ne:33.2}}).pretty()
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}
{ "_id" : 2222, "toy" : null }
{ "_id" : 1112 }

与:

> db.goodstest.find({price:{$ne:33.2},name:"《c program》"}).pretty()
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}

或:

> db.goodstest.find({$or:[{price:45},{_id:2222}]}).pretty()
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}
{ "_id" : 2222, "toy" : null }

8.正则表达式

<key>:{$regex:/patten/<option>}

patten:

/^查询的值/  :查询值的前面部分固定  相当于“查询的值%”

/查询的值$/ :查询值的后面部分固定  相当于“%查询的值”

/查询的值/ :查询所有包含查询的值的文档  相当于“%查询的值%”

option:

i :不区分大小写字母

> db.goodstest.find().pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}
{
        "_id" : ObjectId("6079579e0f65fbc098679fa3"),
        "name" : "《c语言》",
        "price" : 28
}
> db.goodstest.find({name:{$regex:/^《c/}}).pretty()
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}
{
        "_id" : ObjectId("6079579e0f65fbc098679fa3"),
        "name" : "《c语言》",
        "price" : 28
}
> db.goodstest.find({name:{$regex:/语言》$/}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("6079579e0f65fbc098679fa3"),
        "name" : "《c语言》",
        "price" : 28
}

加入option参数和不加option参数的区别:

> db.goodstest.find({name:{$regex:/C语/}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
> db.goodstest.find({name:{$regex:/C语/i}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("6079579e0f65fbc098679fa3"),
        "name" : "《c语言》",
        "price" : 28
}

9.区间查询

> db.goodstest.find({price:{$gt:30,$lt:40}}).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}

10.limit和skip方法

limit()函数用于限制查询结果的个数,若匹配不到括号里数量的结果,则返回匹配数量的结果

> db.goodstest.find().limit(2).pretty()
{
        "_id" : ObjectId("60744b754a2bf7c4568674b5"),
        "name" : "《C语言》",
        "price" : 33.2,
        "adddate" : "2020-10-1",
        "allow" : true,
        "baseinf" : {
                "ISBN" : 1838388,
                "press" : "清华大学出版社"
        },
        "tags" : [
                "good",
                "book",
                "it",
                "program"
        ]
}
{
        "_id" : ObjectId("60744d964a2bf7c4568674b8"),
        "name" : "《c program》",
        "price" : 45
}

skip()函数用于略过指定个数的文档

> db.goodstest.find().skip(2).pretty()
{
        "_id" : ObjectId("6079579e0f65fbc098679fa3"),
        "name" : "《c语言》",
        "price" : 28
}

下一篇:MongoDB笔记(五) 更新操作(详细)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值