我有一个带有日期时间字段的模型
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
中答案 0 :(得分:1)
使用MongoDB,您不能在字段名称的开头加上“$”。
MongoDB Limits and Thresholds - Restrictions on Field Names:
字段名称不能包含点(即。),美元符号(即$)或 空字符。有关替代方案,请参阅Dollar Sign Operator Escaping 方法
尝试以不同的方式命名。
编辑: 根据{{3}},您可以传递db_name参数:
db_field - 用于存储此字段的数据库字段(默认为 该字段的名称)