【发布时间】:2013-02-27 14:25:23
【问题描述】:
var myschema = new Schema({
name: {type:String, default:'fullname'},
subdoc: {
day1: {type:Array, default:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},
day2: {type:Array, default:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
}
});
var mymodel = Mongoose.model('mytest',myschema);
//mongoose 3.5.6: find
mymodel.find({},{'name'}, function(err,docs){
logger.info("---> " + docs);
});
结果:
---> { _id: 512da190ba48050f2e000001, **subdoc: {}**, name: 'fullname' }
仅请求返回name 字段,但此函数始终返回subdoc: {}。有人可以解释一下吗?
使用 mongodb shell,看起来不错
db.mytests.find({},{"name":1})
{ "_id" : ObjectId("512da190ba48050f2e000001"), "name" : "fullname" }
然后我将模型更改为:
var myschema = new Schema({
name: {type:String, default:'fullname'},
subdoc: [
day1: {type:Array, default:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},
day2: {type:Array, default:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}
] // **note: not {} here**
})
使用同样的mongoose api find,结果正是我所期望的:
--->{ _id: 512da46fffebd24b30000002, name: 'fullname' }
我的问题是:为什么字段“subdoc”与以前的架构一起返回?
【问题讨论】: