"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
值。请注意,文档具有键值。
我正在尝试根据 MongoDB 文档中的元素是否存在于我称为 DispatchIDFilter
.
在 MySQL 中执行此操作非常简单...
SELECT DISTINCT KernelName from dbName.table1 where `Index` in ($DispatchIDFilter)
但是我 运行 在尝试使用 match
...
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
值。请注意,文档具有键值。