php mongodb 子查询,MongoDB数组子查询elemMatch

MongoDB数组子查询elemMatch

MongoDB数组子查询elemMatch详解

语法

db_name.collection_name.find({field:{$elemMatch:{subfield1:val1, subfield2:val2}}});

参数

参数

描述

db_name

数据库名

collection_name

集合名

filed

要查询的字段

subfield1

要查询的子字段

val1

子字段等于的值

subfield2

要查询的子字段

val2

子字段等于的值

说明

查询结构体字段的 field 字段的子字段 subfield1 值为 val1 并且 subfield2 值为 val2 的数据。

案例

我们首先,使用 mongo 命令,连接上数据库,具体命令如下:

mongo

如下图所示:

d10c1c3bc8e34b8badcdce3704914637.png

现在,我们使用 use 命令,切换到 haicoder 数据库,具体命令如下:

use haicoder

现在,我们使用

db.haicoder.insertMany([{"url":"haicoder.net", "courses":[{"name":"cpp", "age":100}, {"name":"stl", "age":101}]},

{"url":"m.haicoder.net", "courses":[{"name":"java", "age":90}, {"name":"golang", "age":101}]}])

执行完毕后,此时,如下图所示:

7850bdfafe54f0be84e70b37a877a1dc.png

我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 对数组进行查询,查询 name 为 cpp 并且 age 为 100 的记录,具体命令如下:

db.haicoder.find({"courses":{$elemMatch:{"name":"cpp", "age":100}}}, {_id:0})

执行完毕后,此时,如下图所示:

ca2a55836c9fa1fa443aebfe1a6eefe5.png

我们看到,此时我们匹配了数组的 name 字段和 age 字段都匹配的记录。

MongoDB数组子查询elemMatch总结

在 MongoDB 中,elemMatch 用于查询数组类型的字段的子字段同时必须满足条件,并且在同一条记录中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值