如何使用MongoDB过滤子文档中的数组?

您可以在应用匹配之前使用聚合和展开数组列表。为了理解上述概念,让我们创建一个包含文档的集合。用于创建包含文档的集合的查询如下:

> 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

   ]

}

以上是 如何使用MongoDB过滤子文档中的数组? 的全部内容, 来源链接: utcz.com/z/350271.html

回到顶部