我有这个简单的模型:
abstract class Info {
ObjectId id
Date dateCreated
Date lastUpdated
}
class Question extends Info {
String title
String content
List<Answer> answers = []
static embedded = ['answers']
}
class Answer {
String content
}
以这种方式编写,answer嵌入在question中(并且没有为answer维护id)。我想为每个答案维护id、dateCreated和lastUpdated字段。所以我尝试以下方法:
class Answer extends Info {
String content
}
当我运行一个简单的测试用例(用 1 个答案保存问题)时,我得到以下信息:
> db.question.find()
{ "_id" : ObjectId("4ed81d47e4b0777d795ce3c4"), "answers" : [ { "content" : "its very
cool", "dateCreated" : null, "lastUpdated" : null, "version" : null } ], "content" :
"whats up with mongodb?", "dateCreated" : ISODate("2011-12-02T00:35:19.303Z"),
"lastUpdated" : ISODate("2011-12-02T00:35:19.303Z"), "title" : "first question",
"version" : 0 }
我在这里注意到字段dateCreated和lastUpdate不是由 Grails 自动维护的。还添加了版本字段,但也有一个空值,但有趣的是没有创建_id字段(即使我在Info类中定义了id )。
在第二种情况下,我试试这个:
class Answer {
ObjectId id
String content
}
我得到以下输出:
> db.question.find()
{ "_id" : ObjectId("4ed81c30e4b076cb80ec947d"), "answers" : [ { "content" : "its very
cool" } ], "content" : "whats up with mongodb?", "dateCreated" : ISODate("2011-12-
02T00:30:40.233Z"), "lastUpdated" : ISODate("2011-12-02T00:30:40.233Z"), "title" :
"first question", "version" : 0 }
这一次,也没有为嵌入文档创建id 。对这种情况有什么解释吗?为什么没有id属性,为什么dateCreated、lastUpdated和version是null?这是打算以这种方式工作,还是一个错误?
谢谢,