MongoEngine查询问题

2013-08-26 00:26:42 +08:00
 shoumu
在使用MongoEngine的时候,有一个例子:
class User(Document):
name = StringField(max_length=40)
email = EmailField(required=True)
password = StringField(max_length=256)

数据库中存在了一条记录如下:
{ "_id" : ObjectId("521a21107114486a8a33fbfa"), "name" : "shoumu", "email" : "shoumuzyq@gmail.com", "password" : "shoumu" }

这样子我使用:
for i in User.objects:
print i.name

会得到: shoumu 的结果,
而如果将User中的name改成:name = StringField(max_length=40, primary_key=True),注意,此时没有改数据库中的内容,这时候再执行上面的查询,得到的结果是:521a21107114486a8a33fbfa
请问这是为什么呢?
5774 次点击
所在节点    MongoDB
1 条回复
wuxqing
2013-08-26 08:12:47 +08:00
个人推测是MongoEngine的bug
mongodb的primary_key貌似只能是_id,不能改。你把name设为primary_key,MongoEngine估计读取name的时候,取了_id的值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX