MongoDB数组完全查询

MongoDB数组完全查询

MongoDB 中,我们在使d用 find 查询记录时,用 $all 修饰符,是需要满足所有条件的,即要满足数组里的所有元素,$in 只要满足数组中的一项就可以被查出来。

MongoDB数组完全查询详解

语法

db_name.collection_name.find({filed:{$all:[val1, val2]}});

参数

参数 描述
db_name 数据库名
collection_name 集合名
filed 要查询的字段
val1,val2 filed1 的必须包含 val1 和 val2

说明

查询 filed1 的值包含 val1 和 val2 的记录。

案例

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

mongo

如下图所示:

58_mongodb数组all查询.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"]}])

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

59_mongodb数组all查询.png

我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 加上 all 对数组进行查询,具体命令如下:

db.haicoder.find({"course":{"$all":["Mysql", "MongoDB"]}}, {_id:0})

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

60_mongodb数组all查询.png

我们看到,此时查到了 course 的字段必须都包含 Mysql 和 MongoDB 的记录,即,我们通过模糊查询了数组,我们使用如下命令,继续进行查询:

db.haicoder.find({"course":{"$all":["Java", "Cpp", "MongoDB"]}}, {_id:0})

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

61_mongodb数组all查询.png

我们看到,我们同样实现了完全匹配查询。

MongoDB数组完全查询

在 MongoDB 中,我们在使用 find 查询记录时,用 $all 修饰符,是需要满足所有条件的,即要满足数组里的所有元素,$in 只要满足数组中的一项就可以被查出来。