我有以下架构:
let PlayerSchema = new mongoose.Schema( {
name: String,
country: String,
roundResults: [ {
round: Number,
result: String,
points: Number
} ]
} );
当我使用findOneAndUpdate
更新文档时:
Player.findOneAndUpdate({ id: req.params.id },
{$push: {"roundResults": result }},
{safe: true, upsert: true, new : true},
(err, player) => {
if( ! err && player ) {
res.json( player );
} else {
res.json( err );
}
}
);
我得到以下意外结果:
[
{
"_id": "57c9eb55c2a07a401462e3ec",
"name": "Joe Bloggs",
"country": "England",
"__v": 0,
"roundResults": [
{
"_id": "57c9eba11c597d5e1460e4f0"
}
]
}
]
我没有roundResults
架构但是,如上所示,我得到_id
,我希望看到:
"roundResults": [
"round": 1,
"result": "1",
"points": 3
]
任何人都可以解释为什么会这样,或者我如何将其嵌套在我直接显示的数据上面?
答案 0 :(得分:1)
即使您传递子文档的文字对象,它也是Schema
。并且会为此生成id
。如果是数组,则定义其类型Array
。
注意,如果为属性定义任何模式,则将其视为子网和实体,因此它具有id