MongoDB匹配数组第N项

MongoDB匹配数组第N项

MongoDB 中,我们在使用 find 查询记录的数组字段时,如果我们想匹配数组的某一项的值,我们可以使用 field.index 的形式。

MongoDB匹配数组第N项详解

语法

db_name.collection_name.find({field.index:value});

参数

参数 描述
db_name 数据库名
collection_name 集合名
filed 要查询的字段
index 查询的数组的索引
value 数组的索引对应的值

说明

查询字段 field 的索引为 index 的值等于 value 的记录。

案例

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

mongo

如下图所示:

82_mongodb数组查询匹配指定索引.png

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

use haicoder

现在,我们使用 insertMany 插入三条记录,具体命令如下:

db.haicoder.insertMany([{"url":"haicoder.net", "course":["Python", "Mysql", "MongoDB"]}, {"url":"haicoder", "course":["Java", "Cpp", "Python"]}, {"url":"m.haicoder.net", "course":["Golang", "MongoDB", "Mysql"]}])

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

83_mongodb数组查询匹配指定索引.png

我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 对数组进行查询,查询数组的第一个元素为 Java 的记录,具体命令如下:

db.haicoder.find({"course.0":"Java"}, {_id:0})

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

84_mongodb数组查询匹配指定索引.png

我们看到,此时查到的所有记录是匹配的数组的第一个元素,现在,我们再次查询数组的下标为 1 的元素,具体命令如下:

db.haicoder.find({"course.1":"MySql"}, {_id:0})

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

85_mongodb数组查询匹配指定索引.png

我们看到,此时,我们匹配了数组的第二个元素。

MongoDB匹配数组第N项总结

在 MongoDB 中,我们在使用 find 查询记录的数组字段时,如果我们想匹配数组的某一项的值,我们可以使用 field.index 的形式。