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
如下图所示:
现在,我们使用 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}]}])
执行完毕后,此时,如下图所示:
我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 对数组进行查询,查询 name 为 cpp 并且 age 为 100 的记录,具体命令如下:
db.haicoder.find({"courses":{$elemMatch:{"name":"cpp", "age":100}}}, {_id:0})
执行完毕后,此时,如下图所示:
我们看到,此时我们匹配了数组的 name 字段和 age 字段都匹配的记录。
MongoDB数组子查询elemMatch总结
在 MongoDB 中,elemMatch 用于查询数组类型的字段的子字段同时必须满足条件,并且在同一条记录中。