【问题标题】:mongodb: extract timestamp from ObjectID in json querymongodb:从 json 查询中的 ObjectID 中提取时间戳
【发布时间】:2012-05-20 02:59:35
【问题描述】:

我想使用 json 查询从我的 ObjectID 中提取时间戳,因为我想使用 mongodump 但只在特定日期之间转储数据。我不想把我的时间戳放在 ObjectID 以外的地方,因为我需要数据库尽可能小。

有没有办法通过 mongodump 接受的简单 json 查询从 ObjectID 中提取时间戳?

【问题讨论】:

    标签: mongodb timestamp unix-timestamp mongoexport


    【解决方案1】:

    你可以很简单地做到这一点,在文档页面Mongo Extended JSON(隐藏得很好)你可以找到一个描述如何在 JSON 中表示 mongo 扩展数据类型的表格。您可能知道,ObjectId 的前 4 个字节代表时间戳,这直接映射到十六进制字符串中的前 8 个字符。因此,以下应该有效:

    jhonkola@ubuntu:~$ mongoexport -d so_test -c example -q '{"_id" : {"$gt" : {"$oid" : "4fad36290000000000000000"}}}'
    connected to: 127.0.0.1
    { "_id" : { "$oid" : "4fad3629a8bbba98829d5c1e" }, "a" : "bar", "b" : 2 }
    { "_id" : { "$oid" : "4fad362ea8bbba98829d5c1f" }, "a" : "baz", "b" : 3 }
    { "_id" : { "$oid" : "4fad3635a8bbba98829d5c20" }, "a" : "buzz", "b" : 4 }
    { "_id" : { "$oid" : "4fad363ca8bbba98829d5c21" }, "a" : "fizz", "b" : 5 }
    exported 4 records
    jhonkola@ubuntu:~$ 
    

    以下是示例中使用的所有命令供参考。

    > use so_test
    switched to db so_test
    > db.example.insert({a: "foo", b: 1})
    > db.example.insert({a: "bar", b: 2})
    > db.example.insert({a: "baz", b: 3})
    > db.example.insert({a: "buzz", b: 4})
    > db.example.insert({a: "fizz", b: 5})
    > db.example.find()
    { "_id" : ObjectId("4fad3620a8bbba98829d5c1d"), "a" : "foo", "b" : 1 }
    { "_id" : ObjectId("4fad3629a8bbba98829d5c1e"), "a" : "bar", "b" : 2 }
    { "_id" : ObjectId("4fad362ea8bbba98829d5c1f"), "a" : "baz", "b" : 3 }
    { "_id" : ObjectId("4fad3635a8bbba98829d5c20"), "a" : "buzz", "b" : 4 }
    { "_id" : ObjectId("4fad363ca8bbba98829d5c21"), "a" : "fizz", "b" : 5 }
    > db.example.find({_id : {$gt : ObjectId("4fad362e0000000000000000")}})
    { "_id" : ObjectId("4fad362ea8bbba98829d5c1f"), "a" : "baz", "b" : 3 }
    { "_id" : ObjectId("4fad3635a8bbba98829d5c20"), "a" : "buzz", "b" : 4 }
    { "_id" : ObjectId("4fad363ca8bbba98829d5c21"), "a" : "fizz", "b" : 5 }
    > 
    bye
    
    jhonkola@ubuntu:~$ mongodump -d so_test -c example -q '{"_id" : {"$gt" : {"$oid" : "4fad36290000000000000000"}}}'
    connected to: 127.0.0.1
    DATABASE: so_test    to     dump/so_test
        so_test.example to dump/so_test/example.bson
             4 objects
    
    jhonkola@ubuntu:~$ mongoexport -d so_test -c example -q '{"_id" : {"$gt" : {"$oid" : "4fad36290000000000000000"}}}'
    connected to: 127.0.0.1
    { "_id" : { "$oid" : "4fad3629a8bbba98829d5c1e" }, "a" : "bar", "b" : 2 }
    { "_id" : { "$oid" : "4fad362ea8bbba98829d5c1f" }, "a" : "baz", "b" : 3 }
    { "_id" : { "$oid" : "4fad3635a8bbba98829d5c20" }, "a" : "buzz", "b" : 4 }
    { "_id" : { "$oid" : "4fad363ca8bbba98829d5c21" }, "a" : "fizz", "b" : 5 }
    exported 4 records
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 2019-02-26
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      相关资源
      最近更新 更多