使用Flask的MongoEngine。 datetime字段出错

时间:2014-02-12 12:08:30

标签: python mongodb datetime flask-mongoengine

我有一个带有日期时间字段的模型

user_since = db.DateTimeField()

当我尝试将模型的新对象插入mongo时,没有错误。但写不成功。

我从to_json()打印了对象并试图用mongo shell插入它,我收到以下错误。

field names cannot start with $ [$date] at src/mongo/shell/collection.js:L147

to_json有这个字段。

"user_since": {"$date": 1392205572989}

我似乎找不到任何关于如何解决这个问题的指示。

导致写入失败的原因是什么?

如果写入失败,如何让mongoengine抛出错误。或者至少找出错误是什么?

感谢。

更新: 正如我后来发现的那样,真正的问题不是日期时间字段。问题的详细信息在这个问题MongoEngine Document Object made using from_json doesn't save

1 个答案:

答案 0 :(得分:1)

使用MongoDB,您不能在字段名称的开头加上“$”。

MongoDB Limits and Thresholds - Restrictions on Field Names

  

字段名称不能包含点(即。),美元符号(即$)或   空字符。有关替代方案,请参阅Dollar Sign Operator Escaping   方法

尝试以不同的方式命名。


编辑: 根据{{​​3}},您可以传递db_name参数:

  

db_field - 用于存储此字段的数据库字段(默认为   该字段的名称)