您好,想搜索一下mongo的当前流程, 我只想获取特定操作系统执行的过程。通过示例Windows。
在下面运行查询
db.aggregate( [
{ $currentOp : { allUsers: true, localOps: true } },
{ $match: { shard : 'shard-1' }}
])
我得到了一个很大的json结果。我需要过滤更多属性
我知道OS的信息。我可以从具有$client
结果的command
属性的属性json
中获得
"command": {
"$client": {
"driver": {
"name": "nodejs",
"version": "3.1.7-1"
},
"os": {
"type": "Windows_NT",
"name": "win32",
"architecture": "x64",
"version": "10.0.17763"
},
"platform": "Node.js v10.2.0, LE, mongodb-core: 3.1.6",
"application": {
"name": "NoSQLBoosterV5_91046.417"
},
},
"$configServerState": {
"opTime": {
"ts": Timestamp(1553006039,
5),
"t": NumberLong(4)
}
},
"$db": "cache"
}
如何按os
和type
进行过滤?
答案 0 :(得分:1)
根据您的示例,简单的附加过滤器应该有效。
db.aggregate( [
{ $currentOp : { allUsers: true, localOps: true } },
{ $match: {$and: [
{ shard : 'shard-1' },
{ "command.$client.os.type": "Windows_NT" }]
}}
])
它对您有用吗?
答案 1 :(得分:0)
使用此$ filter:
过滤项目数组,使其仅包含价格大于或等于100的文档
$filter: {
input: "$items",
as: "item",
cond: { $gte: [ "$$item.price", 100 ] }
}
完整的示例是:
db.sales.aggregate([
{
$project: {
items: {
$filter: {
input: "$items",
as: "item",
cond: { $gte: [ "$$item.price", 100 ] }
}
}
}
}
])
可以在https://docs.mongodb.com/manual/reference/operator/aggregation/filter/
中阅读有关此内容的信息