首页 文章资讯内容详情

在MongoDB中如何通过查询子文档来使用数组作为过滤器?

2026-06-04 1 花语

为此,请在MongoDB中使用$setIsSubset。让我们创建一个包含文档的集合-

> db.demo407.insertOne( ... { ... Name:"Chris", ... "details" : [ ... { ... id:100 ... }, ... { ... id:110 ... }, ... { ... id:130 ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : ObjectId("5e70dffe15dc524f70227677") }

在find()方法的帮助下显示集合中的所有文档-

> db.demo407.find().pretty();

这将产生以下输出-

{ "_id" : ObjectId("5e70dffe15dc524f70227677"), "Name" : "Chris", "details" : [ { "id" : 100 }, { "id" : 110 }, { "id" : 130 } ]

以下是通过查询子文档将数组用作过滤器的查询-

> db.demo407.aggregate([ ... {$match: { }}, ... {$project: { ... "details": { ... $filter: { ... input: "$details", ... as: "output", ... cond: { $setIsSubset: [["$$output.id"],[100, 130]] } ... } ... } ... }}])

这将产生以下输出-

{ "_id" : ObjectId("5e70dffe15dc524f70227677"), "details" : [ { "id"