ユーザーが投票した投稿の ID を記録しようとしています。そのためのスキーマを次のように作成しています。
var userSchema = new Schema({
twittername: String,
twitterID: Number,
votedPosts: [{ObjectId : {votetype : Number}} ]
});
ユーザーは完全に作成され、ユーザーが何かに投票するたびに、votedPosts 属性を更新したいので、次のように呼び出します。
User.update({twitterID : req.body.userID} , { $push : {votedPosts : {postID : {votetype: newvotetype }}}} ,function (err, user, raw) {
if (err){
console.log(err);
}
else{
console.log('user ' + user);
}
});
残念ながら、結果はスキーマで説明したとおりではありません。次のようになります。
db.users.find().pretty()
{
"__v" : 0,
"_id" : ObjectId("51bf4ef8dbda2f2e0c000001"),
"twitterID" : 102016704,
"twittername" : "gorkemyurt",
"votedPosts" : [
{
"_id" : ObjectId("51bf5e48c3ffefe20c000002")
}
]
}
マングースがvotedPosts配列に追加する余分な「_id」に混乱しています.なぜObjectId(「51bf5e48c3ffefe20c000002」)がキーと値のペアのキーになれないのですか?