0

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

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 does not save

4

1 回答 1

0

使用 MongoDB,字段名称的开头不能有“$”。

MongoDB 限制和阈值 - 字段名称限制

字段名称不能包含点(即 .)、美元符号(即 $)或空字符。请参阅美元符号运算符转义以获取替代方法。

尝试以不同的方式命名它。


编辑:根据MongoEngine 文档,您可以传递 db_name 参数:

db_field – 存储此字段的数据库字段(默认为字段名称)

于 2014-02-12T12:12:15.713 回答