복붙노트

[MONGODB] MongoDB의에서 필드의 실제의 형태를 돌려줍니다

MONGODB

MongoDB의에서 필드의 실제의 형태를 돌려줍니다

MongoDB를 $ 표시 형식을 사용하여, 상기 필드는 BSON 데이터 종류 (문서를 참조)와 일치하는 경우에 기초하여 검색을 필터링 할 수있다.

의 경우는 예를 들면.

db.posts.find({date2: {$type: 9}}, {date2: 1})

이는 반환 :

{ 
    "_id" : ObjectId("4c0ec11e8fd2e65c0b010000"), 
    "date2" : "Fri Jul 09 2010 08:25:26 GMT" 
}

나는 필드의 실제 유형이 컬렉션의 모든 필드에 대해, 뭔지 말할 것이다 쿼리를해야합니다. 이 MongoDB를 함께 할 수 있습니까?

해결법

  1. ==============================

    1.OK, 여기에 5 월 도움이 몇 가지 관련 질문이 있습니다 :

    OK, 여기에 5 월 도움이 몇 가지 관련 질문이 있습니다 :

    지도-감소를 사용하여 컬렉션의 모든 필드 이름을 가져옵니다.

    여기에 재귀 버전이 나열 가능한 모든 필드입니다.

    희망이 당신이 시작할 수 있습니다. 그러나, 나는 당신이이 요청과 함께 몇 가지 문제로 실행에 거라고 생각한다. 여기에 두 가지 문제가 있습니다 :

    당신은 당신이 문제 # 1를 해결할 수 있다고 가정 그렇다면, 당신은 "모든 필드 이름 가져 오기"에 약간의 변화를 이용하여 문제 # 2를 해결할 수 있어야합니다.

    아마 다음과 같을 것이다 :

    "map" : function() { for (var key in this) { emit(key, [ typeof value[key] ]); } }
    "reduce" : function(key, stuff) { return (key, add_to_set(stuff) ); }
    

    그래서 기본적으로 당신은지도 기능의 키 (배열)를 키 값의 유형을 방출한다. (가) 기능을 감소에서 그런 다음 각 유형에 대해 고유 한 항목을 추가합니다.

    실행의 끝에서이 같은 데이터를 것

    { "_id"[255], "이름"[1,5,8, ...}

    물론,이 모든 작업을 많이이며, 실제 문제에 따라, 당신은 당신이 항상 올바른 유형의 데이터에두고 있다는 것을 (사용자 코드에서) 확인 할 수 있습니다. 데이터가 DB에 후 데이터의 유형을 찾는 것은 확실히 고통입니다.

  2. ==============================

    2.MongoDB를 3.4에서 시작, 당신은 필드의 형식을 반환하는 $ 유형 집계 연산자를 사용할 수 있습니다.

    MongoDB를 3.4에서 시작, 당신은 필드의 형식을 반환하는 $ 유형 집계 연산자를 사용할 수 있습니다.

    db.posts.aggregate( 
        [ 
            { "$project": { "fieldType": {  "$type": "$date2"  } } } 
        ]
    )
    

    이는 수율 :

    { 
        "_id" : ObjectId("4c0ec11e8fd2e65c0b010000"), 
        "fieldType" : "string" 
    }
    
  3. ==============================

    3.몽고 쉘에서 쿼리 아래를 입력

    몽고 쉘에서 쿼리 아래를 입력

      typeof db.employee.findOne().first_name
    

    통사론

     typeof db.collection_name.findOne().field_name
    
  4. ==============================

    4.A는 5 = 있음을 지적하면서, a.constructor.toString ()을 인쇄 기능 번호 () {[네이티브 코드]}, 하나에 비슷한 작업을 수행 할 수 있습니다

    A는 5 = 있음을 지적하면서, a.constructor.toString ()을 인쇄 기능 번호 () {[네이티브 코드]}, 하나에 비슷한 작업을 수행 할 수 있습니다

    db.collection.mapReduce (함수 () {    발광 (this._id.constructor.toString () / ^ 함수 (\ S +) (교체 + $ / "$ 1") 1..); } 함수 (K, V) {    Array.sum 창 (V); }, {아웃 : 인라인 {1}});

  5. from https://stackoverflow.com/questions/3208538/return-actual-type-of-a-field-in-mongodb by cc-by-sa and MIT license