[컴][db] mongodb 에서 collection schema 만드는 query

몽고db /schema 얻기 / schema 몽고 / mongo schema 스키마 / aggregation 을 변수에 넣기 / how to assign aggregation result to the variable

mongodb 에서 collection schema 만드는 query

monogdb 에서는 js 로 query 를 작성하기 용이하다. 그래서 collection 에서 schema 를 출력해주는 query 를 만들어 봤다.

  • 가정: 모든 document 는 같은 schema 를 가지고 있다.
function _getType(coll, fieldName){
    
    var ret = coll.aggregate([
        {$limit: 1},
        { "$project": { 
            _id:0,
            "fieldType": {  "$type": `$${fieldName}` } 
        } }
    ]).toArray()[0]
    
    return ret
}

//------------------------------------
//
//  Main
//
//------------------------------------
// var colls = ["app",
//   "mycollection1",
//   "mycollection2",
// ]
var colls = db.getCollectionNames()

var curDB = db.getSiblingDB("test")

colls.map(function (collname, i){
  // get index
  var idxInfo = curDB[collname].getIndices()

  // get schema
  var schemaInfo = ''
  var schematodo = curDB[collname].findOne()
  var i = 0
  for (var key in schematodo) { 
    
    var ftype = _getType(curDB[collname], key)
    schemaInfo += `  ${key} : "${ftype['fieldType']}",\n`

  }

  // print
  print(`collection: "${collname}:"\nindex: ${JSON.stringify(idxInfo)}\nschema: {\n${schemaInfo}\n}`)
})

Reference

  1. Mongodb schema | How Schema works in Mongodb?
  2. Push query results into variable with MongoDB?

댓글 없음:

댓글 쓰기