"WHERE IN" 相当于 MongoDB 聚合

"WHERE IN" equivalent in MongoDB Aggregation

我正在尝试根据 MongoDB 文档中的元素是否存在于我称为 DispatchIDFilter.

的数组中来过滤这些元素

在 MySQL 中执行此操作非常简单...

SELECT DISTINCT KernelName from dbName.table1 where `Index` in ($DispatchIDFilter) 

但是我 运行 在尝试使用 match...

在 Mongo 中做同样的事情时遇到了一些错误
db.table1.aggregate([
    {"$match": {
      "$expr": {"$in": $DispatchIDFilter}
    }}
    {"$group": {
      "_id": "$KernelName"
    }}
]);

我不确定我当前的实现是否正确,但我希望有人可以告诉我使用 match 完成此操作的正确方法。

假设您提供了一个 array 变量 DispatchIDFilter 您可以按如下方式编写查询:

db.table1.distinct("KernelName", { "Index": { $in: DispatchIDFilter } } )

db.table1.aggregate([
    { $match: { "Index": { $in: DispatchIDFilter } } },
    { $group: { _id: "$KernelName" } }
])

第一个查询是 MongoDB 查询语言 (MQL) 和 returns(输出)不同的 KernalName 值作为数组。参见 db.collection.distinct

第二个是聚合查询。输出 returns 一个 cursor,文档具有不同的 KernalName 值。请注意,文档具有键值。