如何使用 MongoDB 过滤子文档中的数组?
在应用匹配之前,可以使用 aggregate 和 unwind 展开数组列表。为了理解上述概念,让我们创建一个包含文档的新集合。创建包含文档的新集合的查询如下
> db.filterArray.insertOne( { "L": [{ "N":1 }, { "N":2 } , { "N":3 }, { "N":4 }, { "N":5 } ]});执行上述查询后,可以看到以下内容
{
"acknowledged" : true,
"insertedId" : ObjectId("5c6d63f2734e98fc0a434aeb")
}使用 find() 方法从集合中显示文档。查询如下
> db.filterArray.find().pretty();
输出如下
{
"_id" : ObjectId("5c6d63f2734e98fc0a434aeb"),
"L" : [
{
"N" : 1
},
{
"N" : 2
},
{
"N" : 3
},
{
"N" : 4
},
{
"N" : 5
}
]
}以下查询用于通过 MongoDB 筛选子文档中的数组。我们使用了 $gt 来获取大于 3 的字段
> db.filterArray.aggregate({ $match:{_id:ObjectId("5c6d63f2734e98fc0a434aeb")}}, {
$unwind:'$L'}, {$match:{'L.N':{$gt:3}}},
{$group:{_id:'$_id',subDocument:{$push:'$L.N'}}}).pretty();输出如下
{
"_id" : ObjectId("5c6d63f2734e98fc0a434aeb"),
"subDocument" : [
4,
5
]
}
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP