복붙노트

[MONGODB] 어떻게 날짜 형식으로 텍스트에서 MongoDB를에 속성을 변환합니까?

MONGODB

어떻게 날짜 형식으로 텍스트에서 MongoDB를에 속성을 변환합니까?

MongoDB를, 나는 문자열로 CSV에서 가져온 "ClockInTime"라는 필드가있는 문서가 있습니다.

무엇 않는 날짜 데이터 형이 텍스트를 기반으로 값을 변환하는 등의 적절한 db.ClockTime.update () 문 모양?

해결법

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

    1.이 코드를 수행해야합니다

    이 코드를 수행해야합니다

    > var cursor = db.ClockTime.find()
    > while (cursor.hasNext()) {
    ... var doc = cursor.next();
    ... db.ClockTime.update({_id : doc._id}, {$set : {ClockInTime : new Date(doc.ClockInTime)}})
    ... }
    
  2. ==============================

    2.나는 정확히 제프 프리츠와 같은 상황이있다.

    나는 정확히 제프 프리츠와 같은 상황이있다.

    내 경우에는 내가 다음과 같은 간단한 해결책으로 성공했다 :

    db.ClockTime.find().forEach(function(doc) { 
        doc.ClockInTime=new Date(doc.ClockInTime);
        db.ClockTime.save(doc); 
        })
    
  3. ==============================

    3.이 pymongo를 사용하여 파이썬에서 일반 샘플 코드

    이 pymongo를 사용하여 파이썬에서 일반 샘플 코드

    from pymongo import MongoClient
    from datetime import datetime
    
    def fixTime(host, port, database, collection, attr, date_format):
        #host is where the mongodb is hosted eg: "localhost"
        #port is the mongodb port eg: 27017
        #database is the name of database eg : "test"
        #collection is the name of collection eg : "test_collection"
        #attr is the column name which needs to be modified
        #date_format is the format of the string eg : "%Y-%m-%d %H:%M:%S.%f"
        #http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
        client = MongoClient(host, port)
        db = client[database]
        col = db[collection]
        for obj in col.find():
            if obj[attr]:
                if type(obj[attr]) is not datetime:
                    time = datetime.strptime(obj[attr],date_format)
                    col.update({'_id':obj['_id']},{'$set':{attr : time}})
    

    추가 정보를 원하시면 : http://salilpa.com/home/content/how-convert-property-mongodb-text-date-type-using-pymongo

  4. ==============================

    4.당신이 확인해야하는 경우 필드는 이미이 조건을 사용하여 변환 된 경우 :

    당신이 확인해야하는 경우 필드는 이미이 조건을 사용하여 변환 된 경우 :

    /usr/bin/mongo mydb --eval 'db.mycollection.find().forEach(function(doc){
        if (doc.date instanceof Date !== true) {
            doc.date = new ISODate(doc.date);
            db.mycollection.save(doc);
        }
    });'
    

    그렇지 않으면 명령 행은 중단 될 수 있습니다.

  5. ==============================

    5.몽고 4.x의 시작 :

    몽고 4.x의 시작 :

    이러한 것을 :

    // { a: "2018-03-03" }
    db.collection.update(
      {},
      [{ $set: { a: { $toDate: "$a" } } }],
      { multi: true }
    )
    // { a: ISODate("2018-03-03T00:00:00Z") }
    
  6. from https://stackoverflow.com/questions/2900674/how-do-i-convert-a-property-in-mongodb-from-text-to-date-type by cc-by-sa and MIT license