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' }
fieldのみname
が返されるように要求されますが、この関数は常に を返しますsubdoc: {}
。誰かがこれを説明できますか?
mongodbシェルを使用してください。問題ないようです
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' が以前のスキーマで返されるのですか?