Как отфильтровать процесс на mongodb из конкретной ОС - PullRequest
0 голосов
/ 19 марта 2019

Привет хочу сделать поиск текущего процесса монго, и я хочу получить только процедуры, которые выполняются конкретной ОС. К примеру windows.

Выполнение запроса ниже

db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match: {  shard : 'shard-1' }}
 ])

Я получил большой результат JSON. Мне нужно отфильтровать больше свойств

Я знаю, что информация ОС. Я могу получить от свойства $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?

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Согласно вашему примеру, простой дополнительный фильтр должен работать.

db.aggregate( [
    { $currentOp : { allUsers: true, localOps: true } },
    { $match: {$and: [
         { shard : 'shard-1' },
         { "command.$client.os.type": "Windows_NT" }]
    }}
 ])

У вас работает?

0 голосов
/ 27 марта 2019

используйте этот $ фильтр:

фильтрует массив элементов, чтобы включить только те документы, цена которых превышает или равна 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...