如何将python time.gmtime()转换为MongoDB日期

时间:2015-10-09 09:54:30

标签: python mongodb mongodb-query

我需要将gmtime()返回的时间转换为可读字符串。作为一个错误,我在mongo和存储日期中填充了大量数据作为字符串。在我的previous question讨论之后,我正在进行正则表达式匹配以从mongo获取相关数据。现在的问题是转换gmtime,即:

time.struct_time(tm_year=2015, tm_mon=10, tm_mday=9, tm_hour=9, tm_min=49, tm_sec=31, tm_wday=4, tm_yday=282, tm_isdst=0)

到此:

Tue 27 Jan 2015

这是存储在mongo

中的字符串格式
{
    "startTime" : "Sun 25 Jan 2015 07:14:26 GMT",
    "endTime" : "",
    "jobStatus" : "JOBCANCELLED",
    "uiState" : "HISTORY",
    "priority" : "SILVER"
}

使Mongo查询工作的愚蠢方式:

db.getCollection('jobsCollection').find({"startTime":{$regex: "Tue 27 Jan 2015.*"}})

我需要将gmtime转换为mongo查询中显示的regex属性

有什么方法可以实现这个目标吗?

3 个答案:

答案 0 :(得分:1)

import time
print time.gmtime(123456)
print time.strftime("%A %d-%b-%Y", time.gmtime(time.time()))
>>>Friday 09-Oct-2015

答案 1 :(得分:0)

strftime函数应该可以帮到你。

答案 2 :(得分:0)

你问了错误的问题,因此得到了错误的答案。您真正想要做的是将当前字符串转换为BSON public class CustomEditText extends EditText{ boolean canPaste() { return false; } @Override public boolean isSuggestionsEnabled() { return false; } public CustomEditText(Context context) { super(context); init(); } public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CustomEditText(Context context, AttributeSet attrs, int defStyle){ super(context, attrs, defStyle); this.context = context; init(); } private void init() { this.setCustomSelectionActionModeCallback(new ActionModeCallbackInterceptor()); this.setLongClickable(false); this.setSelected(false); } private class ActionModeCallbackInterceptor implements ActionMode.Callback { public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } public void onDestroyActionMode(ActionMode mode) {} } }

是的,只是在外壳中进行操作,因为这样写起来要简单得多,而且它是一个"一个关闭"过程,为什么要写一个更长的程序?:

Date

这将以最有效和最安全的方式将每个字符串转换为BSON var bulk = db.jobsCollection.initializeOrderedBulkOp(), count = 0; db.jobsCollection.find({ "startTime": { "$type": 2 } }).forEach(function(doc) { bulk.find({ "_id": doc._id }).updateOne({ "$set": { "startTime": new Date(doc.startTime) } }); count++; if ( count % 1000 == 0 ) { bulk.execute(); bulk = db.jobsCollection.initializeOrderedBukOp(); } }); if ( count % 1000 != 0 ) bulk.execute(); 类型。