- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想读取一个包含 ObjectId 和 ISODate 的 JSON 文件。
JSON 数据:
{
"_id" : ObjectId("5baca841d25ce14b7d3d017c"),
"country" : "in",
"state" : "",
"date" : ISODate("1902-01-31T00:00:00.000Z")
}
最佳答案
我想对 Maviles 做一些扩展' answer通过从其他几个 SO 问题中添加一些注释。
首先,来自 « Unable to deserialize PyMongo ObjectId from JSON » 我们了解到此数据看起来像实际 BSON/MOngo 扩展 JSON 对象的 Python 表示。 native BSON 文件也是二进制文件,而不是文本。
其次,来自« How can I use Python to transform MongoDB's bsondump into JSON? » 我们可以扩展 Fabian Fagerholm的回答:
def read_mongoextjson_file(filename):
with open(filename, "r") as f:
# read the entire input; in a real application,
# you would want to read a chunk at a time
bsondata = '['+f.read()+']'
# convert the TenGen JSON to Strict JSON
# here, I just convert the ObjectId and Date structures,
# but it's easy to extend to cover all structures listed at
# http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON
jsondata = re.sub(r'ObjectId\s*\(\s*\"(\S+)\"\s*\)',
r'{"$oid": "\1"}',
bsondata)
jsondata = re.sub(r'ISODate\s*\(\s*(\S+)\s*\)',
r'{"$date": \1}',
jsondata)
jsondata = re.sub(r'NumberInt\s*\(\s*(\S+)\s*\)',
r'{"$numberInt": "\1"}',
jsondata)
# now we can parse this as JSON, and use MongoDB's object_hook
# function to get rich Python data structures inside a dictionary
data = json.loads(jsondata, object_hook=json_util.object_hook)
return data
如您所见,比较以前的版本和这个版本,处理类型非常简单。使用 MongoDB Extended JSON reference对于您需要的任何其他内容。
一些额外的注意事项:
bsondata = '['+f.read()+']'
否则我会在第一个对象的末尾得到一个 JSONDecodeError: Extra data: line 38 column 2 (char 1016)
。
bson
的 json_utils
问题,这个线程 « importing json_utils issues ImportError » 帮助了我,我。即:pip uninstall bson
pip uninstall pymongo
pip install pymongo
这是一个 paste有一个完整的工作示例。
关于python - 如何在 Python 中读取包含 ObjectId 和 ISODate 的 json 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52672598/
我的应用程序生成 JSON 格式的日志。日志看起来像这样: {"LogLevel":"error","Datetime":"2013-06-21T11:20:17Z","Module":"DB","M
我正在编写一个 RScript 来将当前系统时间戳与 MongoDB 最后更新的时间戳进行比较。我的做法: db.runs.find().sort({'id':-1}).limit(1) - 给出最后
如何将字符串 "2015-02-02" 转换为 ISODate 2015-02-02T00:00:00.000Z?我试图找到一些例子,但没有找到。 最佳答案 您可以为此使用常规的 Javascript
我试图将正则表达式过滤器(年)应用于日期类型字段,但查询未返回任何结果。那么是不是试图了解此查询的行为? db.collection.find({"ReportedDate":/2016/i}) 注意
我正在执行测试以确保我正确获取日期。 我当前的测试是:选择 mongodb ISODate 格式的日期并将其转换为数值(自 1970 年以来的毫秒数),反之亦然 示例: var date_test =
我正在使用 MongoCursor 迭代集合并检索changeDate(ISODate 格式)。但是,使用 mongocursor 会以不同的格式返回数据。是否可以检索 ISODate 格式的chan
是否可以计算文档中两个日期之间的差异服务器端,并对其进行查询? (如SQL的DATEDIFF函数) 假设我有很多这样的文档: >>> db.collection.find() [ { "id"
我需要返回集合中每个用户的最小 client_timestamp 值,但是我无法让 $min 运算符以这种方式运行。有没有办法让查询返回集合中所有 user_ids 的最小 client_timest
我正在寻找来自 qt 的日期时间,以将字符串作为 isodate 但带有时区返回给我。我有时会在网上查看我的问题,但没有找到解决方案 我刚刚得到这个: this->ui.dateEnd->dateTi
为什么最后两个语句返回false? test:PRIMARY> a = new ISODate(); b = a; ISODate("2014-08-21T19:48:12.963Z") test:P
问题在 MongoDB 中将字符串解析为日期时,推荐的实现是什么? 我问这个是因为我们有供应商以“2017-01-01”和“2017/01/01”的格式向我们发送日期的字符串表示形式。我原以为使用 D
在集合中,我存储了这种文档: { "_id" : ObjectId("55e8a5cba21b9e051eb448d1"), "created_at" : "2015-01-01T00
我正在尝试使用 nodejs/mongoose 从 mongodb 获取结果。 var dateStr = new Date(year,month,day,0,0,0); var nextDate =
我正在尝试按小时聚合 MongoDB 集合中的记录,并且需要将存储为时间戳(毫秒)的日期转换为 ISODate,以便我可以使用聚合框架的内置日期运算符($hour、$month 等) 记录存储为 {
我正在尝试运行这个: mongoexport.exe -h *MYHOST* -p *MYPORT* -q "{'time':{'$gte': ISODate('2014-12-21 12:57:00
我似乎无法在 MongoDB 中使用最基本的日期查询。文档看起来像这样: { "_id" : "foobar/201310", "ap" : "foobar", "dt" :
我无法在 python 中导入 rdflib。错误详细信息: Python 2.7.3 (default, Jun 27 2012, 23:48:21) [GCC 4.6.1] on linux2 T
有谁知道一种更简洁的方法来将时区包含在 QDateTime 的 ISO 字符串表示中? 我应该可以使用以下内容: qDebug() #include int main(int argc, int
我有一个适用于 mongodb shell 的简单查询: db.collection.find({"date": {$lt: ISODate("2015-11-03T00:00:00Z")} }) 非
我从 ISODate 对象的 MongoDb 接口(interface)中丢失了纳秒。当我在 perl 中读取它们时,所有纳秒都设置为零。 首先是我的环境: MongoDB version: 1.8.
我是一名优秀的程序员,十分优秀!