是否可以查看MongoDB视图的管道定义?

时间:2018-07-26 14:29:13

标签: mongodb mongodb-query

几天前,我已经创建了MongoDB视图。现在,我想再次看看它。 (我编写的用于创建视图的查询)。有可能吗?

我尝试使用collmod函数db.runCommand( { collMod: 'viewName'}),但它只是返回'Ok'作为响应。

我从几个小时开始寻找它,但是没有运气。

1 个答案:

答案 0 :(得分:0)

您可以使用db.getCollectionInfos()方法。有关详细说明,请参见manual for the method

例如:

> db.createView('testview', 'test', {$project: {a:1, b:1}})

> db.getCollectionInfos({name:'testview'})
[
  {
    "name": "testview",
    "type": "view",
    "options": {
      "viewOn": "test",
      "pipeline": [
        {
          "$project": {
            "a": 1,
            "b": 1
          }
        }
      ]
    },
    "info": {
      "readOnly": true
    }
  }
]

视图定义显示在pipeline字段下。

请注意,您还可以按type: 'view'进行过滤,以显示数据库中所有视图的定义:

> db.getCollectionInfos({type:'view'})
[
  {
    "name": "testview",
    "type": "view",
    "options": {
      "viewOn": "test",
      "pipeline": [
        {
          "$project": {
            "a": 1,
            "b": 1
          }
        }
      ]
    },
    "info": {
      "readOnly": true
    }
  },
  {
    "name": "testview2",
    "type": "view",
    "options": {
      "viewOn": "test",
      "pipeline": [
        {
          "$group": {
            "_id": null,
            "count": {
              "$sum": 1
            }
          }
        }
      ]
    },
    "info": {
      "readOnly": true
    }
  }
]