совпадение двух миллисекунд в mongodb - PullRequest
0 голосов
/ 08 января 2020

Я работаю с flask в python, я хочу создать API для сбора данных. Но у меня возникла проблема при сопоставлении коллекции со значением ключа в миллисекундах. здесь мой код для извлечения из mon go:

class JSONEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, ObjectId):
            return str(o)
        return json.JSONEncoder.default(self, o)


@app.route('/sc_twitter', methods=['GET'])
def home():
    try:
        params = request.args
        if 'limit' in params:
            limit = params['limit']
        else:
            limit = 20
        if 'skip' in params:
            skip = params['skip']
        else:
            skip = 0

        data_content = []
        con = db.use_db(app.config['MONGO_DB_NAME'])
        mydb = con[app.config['MONGO_DB_NAME']]
        millis_now = int(round(time.time() * 1000))
        three_days_ago = millis_now - (timedelta(days=3).total_seconds() * 1000)
        logger.debug(millis_now)
        logger.debug(three_days_ago)
        content = mydb["content"].aggregate(
            [
                {
                    "$match": {
                        "retweet": {
                            "$gt": app.config['TWITTER_MIN_RETWEET']
                        },
                        "datetime": {
                            "$gte":  three_days_ago,
                            "$lte": millis_now
                        }
                    }
                },
                {
                    "$limit": int(limit)
                },
                {
                    "$skip": int(skip)
                }
            ]
        )
        for x in content:
            logger.debug(x)
            data_content.append(x)
        data_return = {
            "data": {
                "content_type": "twitter",
                "collections": data_content,
                "total_collections": len(data_content),
                "limit": limit,
                "skip": skip
            }
        }
        logger.success("data collected")
        return jsonify(json.loads(JSONEncoder().encode(data_return)))
    except Exception as e:
        logger.exception(e)
        return make_response("failed to collect data, error [{}] in home".format(e), 400)

ответ сверху:

{
  "data": {
    "collections": [],
    "content_type": "twitter",
    "limit": 20,
    "skip": 0,
    "total_collections": 0
  }
}

но, если я командую ключом datetime из списка, здесь ответ :

{
  "data": {
    "collections": [
      {
        "_id": "1176432746731671552",
        "content_img_url": "https://pbs.twimg.com/media/EFOHWPeVUAAf6EW.jpg",
        "content_text": "sebuah solusi inii #HidupMahasiswa #DPR @DPR_RIpic.twitter.com/DGk4kgwloR",
        "content_type": "images",
        "content_url": "https://twitter.com/yogakosasih_/status/1176432746731671552",
        "datetime": "1569318398000",
        "display_name": "zero empati",
        "profile_picture": "https://pbs.twimg.com/profile_images/1175338318256492544/39crW5A7_bigger.jpg",
        "retweet": 989,
        "username": "yogakosasih_"
      },
      {
        "_id": "1196980847561211906",
        "content_img_url": "https://pbs.twimg.com/media/EJyHuhnVUAADjtZ.jpg",
        "content_text": "GiveAway ke-2 OVO/Gopay 100K untuk 5 Orang\n\n1. Klik http://wa.me/6281553339999 \n2. Katakan \"Hai BB\"\n3. Daftar dengan Nama Lengkap + Email\n4. Screenshoot kan ya \n\nYuk segera, yang daftar sy kasih OVO / Gopay #WhatsAppGuepic.twitter.com/KmAPXFGx10",
        "content_type": "images",
        "content_url": "https://twitter.com/BebasBayar/status/1196980847561211906",
        "datetime": "1574217447000",
        "display_name": "BebasBayar",
        "profile_picture": "https://pbs.twimg.com/profile_images/1179945283192414208/CCTVI44Y_bigger.jpg",
        "retweet": 155,
        "username": "BebasBayar"
      },
      {
        "_id": "1213643802964938752",
        "content_img_url": "https://pbs.twimg.com/media/ENe6WHtU4AECpng.jpg",
        "content_text": "Gatega liatnya mau nangis\n#PrayforAustraliapic.twitter.com/84XyD1i6mw",
        "content_type": "images",
        "content_url": "https://twitter.com/rapwoonergizer/status/1213643802964938752",
        "datetime": "1578190205000",
        "display_name": "fa?",
        "profile_picture": "https://pbs.twimg.com/profile_images/1211812652877434880/BCEVpGvC_bigger.jpg",
        "retweet": 531,
        "username": "rapwoonergizer"
      },
      {
        "_id": "1213652836191309834",
        "content_img_url": "https://pbs.twimg.com/media/ENfCzfNU0AQHzUi.jpg",
        "content_text": "#PrayForAustralia\nTuhan jika Engkau marah, marahlah tapi lindungi mereka yang tak bersalah:(pic.twitter.com/xeQ484V5fH",
        "content_type": "images",
        "content_url": "https://twitter.com/Wahadahatika_/status/1213652836191309834",
        "datetime": "1578192359000",
        "display_name": "wahadahatika",
        "profile_picture": "https://pbs.twimg.com/profile_images/1213493366756798464/CCG2djrK_bigger.jpg",
        "retweet": 958,
        "username": "Wahadahatika_"
      },
      {
        "_id": "1213682908176633858",
        "content_img_url": "https://pbs.twimg.com/media/ENfeJB1UwAE4mQf.jpg",
        "content_text": "Mau nangis liat ini, kasian banget ya allah\n#PrayForAustraliapic.twitter.com/Nyx5tC7U4W",
        "content_type": "images",
        "content_url": "https://twitter.com/wozhijh/status/1213682908176633858",
        "datetime": "1578199529000",
        "display_name": "echott✨",
        "profile_picture": "https://pbs.twimg.com/profile_images/1211800537890344960/EizSrbnC_bigger.jpg",
        "retweet": 204,
        "username": "wozhijh"
      },
      {
        "_id": "1213644747190833152",
        "content_img_url": "https://pbs.twimg.com/media/ENe7c3fUUAAHdD9.jpg",
        "content_text": "Daripada liat kejadian” psycho gw lebih gampang nangis kalo liat keadaan alam sprti ini, i can’t feel that but, their condition makes me sooOOo sad, may Allah sends rain in Australia #PrayForAustraliapic.twitter.com/FdF2FD7L9o",
        "content_type": "images",
        "content_url": "https://twitter.com/agnvluv/status/1213644747190833152",
        "datetime": "1578190430000",
        "display_name": "dreamxer✨",
        "profile_picture": "https://pbs.twimg.com/profile_images/1193158244627124225/FBLxiKvD_bigger.jpg",
        "retweet": 153,
        "username": "agnvluv"
      },
      {
        "_id": "1213653151359746048",
        "content_img_url": "https://pbs.twimg.com/media/ENfDGG4UUAA6cfS.jpg",
        "content_text": "#PrayForAustralia semoga lekas membaikpic.twitter.com/5w8v5oQL1k",
        "content_type": "images",
        "content_url": "https://twitter.com/zulbismo/status/1213653151359746048",
        "datetime": "1578192434000",
        "display_name": "Zulbismo",
        "profile_picture": "https://pbs.twimg.com/profile_images/1213655840512565248/eaT3FSQA_bigger.jpg",
        "retweet": 156,
        "username": "zulbismo"
      },
      {
        "_id": "1213672380775583744",
        "content_img_url": "https://pbs.twimg.com/media/ENfUl4dUEAESv4s.jpg",
        "content_text": "Ya Tuhanku, turunkan lah hujan di hutan Australia, lindungilah lah mereka yg berada di sana. Aamiin Allahumma Aamiin\n#PrayForAustraliapic.twitter.com/luo3Y4TvNg",
        "content_type": "images",
        "content_url": "https://twitter.com/_ggttaa_/status/1213672380775583744",
        "datetime": "1578197019000",
        "display_name": "기타 안제니",
        "profile_picture": "https://pbs.twimg.com/profile_images/1212999447023509505/dpSyA-3n_bigger.jpg",
        "retweet": 177,
        "username": "_ggttaa_"
      },
      {
        "_id": "1213660869906722816",
        "content_img_url": "https://pbs.twimg.com/media/ENfKDyzUUAEZP5d.jpg",
        "content_text": "Mungkin saat ini kami dan mereka yang disana sedang mengalami duka. Hanya saja kita berbeda. Air dan api.\n\nApapun yang saat ini terjadi disana, maaf aku dan mungkin yang lain hanya bisa bantu dengan doa. Semoga api cepat padam\n\n#PrayForAustraliapic.twitter.com/rfbmNFd4Zl",
        "content_type": "images",
        "content_url": "https://twitter.com/Rhenhwang/status/1213660869906722816",
        "datetime": "1578194274000",
        "display_name": "HwangRhen",
        "profile_picture": "https://pbs.twimg.com/profile_images/1209148003052711936/etjvvixu_bigger.jpg",
        "retweet": 441,
        "username": "Rhenhwang"
      },
      {
        "_id": "1213632077599346688",
        "content_img_url": "https://pbs.twimg.com/media/ENev6keU4AA2gmi.jpg",
        "content_text": "Ya allah ga tega liatnya #PrayForAustraliapic.twitter.com/yWQkZmXauN",
        "content_type": "images",
        "content_url": "https://twitter.com/tehhyaya/status/1213632077599346688",
        "datetime": "1578187410000",
        "display_name": "??",
        "profile_picture": "https://pbs.twimg.com/profile_images/1212849589797060609/Z7kUSSvw_bigger.jpg",
        "retweet": 335,
        "username": "tehhyaya"
      },
      {
        "_id": "1213630117974401024",
        "content_img_url": "https://pbs.twimg.com/media/ENeuH_5UUAAwVE5.jpg",
        "content_text": "Nangis ya Allah :\" \nGa tega. Stay safe buat yang disana :\"\n\n #PrayForAustraliapic.twitter.com/whIGEJjqCD",
        "content_type": "images",
        "content_url": "https://twitter.com/Itsland1/status/1213630117974401024",
        "datetime": "1578186942000",
        "display_name": "Syalalala~~~",
        "profile_picture": "https://pbs.twimg.com/profile_images/1202880778192818176/5BzuGWYQ_bigger.jpg",
        "retweet": 198,
        "username": "Itsland1"
      },
      {
        "_id": "1213672947140849664",
        "content_img_url": "https://pbs.twimg.com/media/ENfVD9pU0AEZvXY.jpg",
        "content_text": "Not about x1 but ini bener2 bikin aku nangis. Ya Allah opor aja hujan disini ke Australia\n#PrayForAustraliapic.twitter.com/ogp8vO1GXR",
        "content_type": "images",
        "content_url": "https://twitter.com/minheealways/status/1213672947140849664",
        "datetime": "1578197154000",
        "display_name": "del?",
        "profile_picture": "https://pbs.twimg.com/profile_images/1212300605470826501/X5yNWSoc_bigger.jpg",
        "retweet": 122,
        "username": "minheealways"
      },
      {
        "_id": "1213641393903521793",
        "content_img_url": "https://pbs.twimg.com/media/ENe4aC9VUAAclu_.jpg",
        "content_text": " pagi pagi buka twitter liat #PrayForAustralia pas di buka banyak banget hewan yang mati termasuk koala, jangan sampe populasinya punahpic.twitter.com/MufYQHkhlr",
        "content_type": "images",
        "content_url": "https://twitter.com/FarizkahR/status/1213641393903521793",
        "datetime": "1578189631000",
        "display_name": "Farizkah Rahmah",
        "profile_picture": "https://pbs.twimg.com/profile_images/1211961152764170240/HRGFsdyD_bigger.jpg",
        "retweet": 126,
        "username": "FarizkahR"
      },
      {
        "_id": "1213636971563585536",
        "content_img_url": "https://pbs.twimg.com/media/ENe0XUFUwAATRCj.jpg",
        "content_text": "Kemaren hutan amazon sekarang kebakaran hutan di australia, aku tidak tau apa yang sedang terjadi tetapi sepertinya bumi pun sudah lelah dengan semua ini,semoga semua selalu dalam perlindungan.\n#PrayForAustralia #AustraliaOnFirepic.twitter.com/NUhdY6TOxW",
        "content_type": "images",
        "content_url": "https://twitter.com/Mhardikaaa/status/1213636971563585536",
        "datetime": "1578188576000",
        "display_name": "m",
        "profile_picture": "https://pbs.twimg.com/profile_images/1201402836229058560/E7W-BCit_bigger.jpg",
        "retweet": 333,
        "username": "Mhardikaaa"
      },
      {
        "_id": "1213651573026390017",
        "content_img_url": "https://pbs.twimg.com/media/ENfBpmxU4AA7V21.jpg",
        "content_text": "Walaupn mrk itu \"cuma\" hewan, tp kita bisa liat sendiri dari sorot mata nya kalo mereka itu bener2 butuh bantuan.\nDan gambar ini mukul gw bgt \nGw cm bisa brhrp kejdian\" ini gbkl keulang lagi, karena msh byk yg layak utk hidup dibumi ini selain hanya manusia\n#PrayForAustraliapic.twitter.com/GlwNJ3ciVB",
        "content_type": "images",
        "content_url": "https://twitter.com/fallinginbibidi/status/1213651573026390017",
        "datetime": "1578192058000",
        "display_name": "isyanambyar",
        "profile_picture": "https://pbs.twimg.com/profile_images/1213271141353050112/ileO1Jhx_bigger.png",
        "retweet": 127,
        "username": "fallinginbibidi"
      },
      {
        "_id": "1213637961973059584",
        "content_img_url": "https://pbs.twimg.com/media/ENe1PELVAAANnxe.jpg",
        "content_text": "#PrayForAustralia \nSibuk mikir perang dunia,  sibuk mikirin idol,  sibuk mikirin skripsi. Normalnya tetep nggak tega liat ginian sesibuk apapun itu. \nAndai banyak uang pengen jadi voluntir kesana,...pic.twitter.com/n3ClJV3NF5",
        "content_type": "images",
        "content_url": "https://twitter.com/IJaekang/status/1213637961973059584",
        "datetime": "1578188813000",
        "display_name": "Ijaekang",
        "profile_picture": "https://pbs.twimg.com/profile_images/1212321917341822976/idTaYe_i_bigger.jpg",
        "retweet": 166,
        "username": "IJaekang"
      },
      {
        "_id": "1213642401299886081",
        "content_img_url": "https://pbs.twimg.com/media/ENe5QYRUcAA3JkA.jpg",
        "content_text": "Kasih saja hujannya ke Australia ya Allah biar cpt padam kasihan sama hewan2nya\n#PrayForAustraliapic.twitter.com/sRcX3wDeFj",
        "content_type": "images",
        "content_url": "https://twitter.com/Arinana1485/status/1213642401299886081",
        "datetime": "1578189871000",
        "display_name": "???????????",
        "profile_picture": "https://pbs.twimg.com/profile_images/1213307674055434240/xA5xga0v_bigger.png",
        "retweet": 217,
        "username": "Arinana1485"
      },
      {
        "_id": "1213594647404011521",
        "content_img_url": "https://pbs.twimg.com/media/ENeN4OXUUAA9sso.jpg",
        "content_text": "Ada apa dg pak menteri Luhut \nTakut investasi China terganggu\nDrpd Kedaulatan Negara !!\n\nLebih milih jadi jonggos drpd mempertahankan harga diri \n\n#NatunaBukanNacina\n\nYg mau ikut mainkan tagar kita hari ini, mari kita lambungkan bersama\n\n#NatunaBukanNacina \nJgn dicampur tagarnyapic.twitter.com/9mybbCio5y",
        "content_type": "images",
        "content_url": "https://twitter.com/OllaButterfly_/status/1213594647404011521",
        "datetime": "1578178486000",
        "display_name": "Olla Butterfly",
        "profile_picture": "https://pbs.twimg.com/profile_images/1207298241659686912/1u-62tW4_bigger.jpg",
        "retweet": 176,
        "username": "OllaButterfly_"
      },
      {
        "_id": "1214187759050510343",
        "content_img_url": "https://pbs.twimg.com/media/ENmpU5gU4AEbmMC.jpg",
        "content_text": "berani usik kehidupannya? \nberani ganggu dia? \nberani fitnah dia? \nberani ngatain dia? \n\nfiks lo salah nyari musuh, MAJU SINI ANJING DIDEPAN GUA! ><\n#우리_정국이_사랑해\n#톱스타뉴스_거짓기사_사과해pic.twitter.com/mqaZue0678",
        "content_type": "images",
        "content_url": "https://twitter.com/marsyaaax/status/1214187759050510343",
        "datetime": "1578319894000",
        "display_name": "bts enthusiast",
        "profile_picture": "https://pbs.twimg.com/profile_images/1214188368386392064/-T5crFE3_bigger.jpg",
        "retweet": 190,
        "username": "marsyaaax"
      },
      {
        "_id": "1214192989783724032",
        "content_img_url": "https://pbs.twimg.com/media/ENmuFL6U8AA-0-K.jpg",
        "content_text": "#우리_정국이_사랑해 aku gak tau apa mksd dari mereka menjelek-jelekan mu, mengatakan buruk tentangmu , yg ku tau kau seorang jungkook yang ramah terhadap org banyak, sopan dan baik hati. Biarkanlah mereka berkata semaunya, dunia juga pasti tau kau seperti apa . We love u jk pic.twitter.com/ClAzeK6uWA",
        "content_type": "images",
        "content_url": "https://twitter.com/AFerronyca/status/1214192989783724032",
        "datetime": "1578321142000",
        "display_name": "Alesca Ferronyca",
        "profile_picture": "https://pbs.twimg.com/profile_images/1073870795313541121/wzbf-GM8_bigger.jpg",
        "retweet": 164,
        "username": "AFerronyca"
      }
    ],
    "content_type": "twitter",
    "limit": 20,
    "skip": 0,
    "total_collections": 20
  }
}

для вашей информации, в DEBUG millis_now - 1578509100959, а three_days_ago - 1578249900959.0, потому что это большие данные, я не могу предоставить всю свою коллекцию, но наибольшее значение datetime 1578310345000 и по меньшей мере 1578310345000.

Я был поисковой ссылкой из любого источника, кто-нибудь может мне помочь? извините, мой английский sh очень плохо.

...