0

私は 2 つのスキーマを持っており、マッチを Web ページに出力すると以下のデータが生成されますが、この team[] フィールドは、開発の以前の時点からそこにあると信じており、それ以来、ホームチームを保存することができました。このフィールドは不要なため、どうすれば削除できますか?

チーム スキーマ

var Team = new Schema({
  'key' : {
    unique : true,
    type : Number,
    default: getId
  },
  'name' : { type : String,
              validate : [validatePresenceOf, 'Team name is required'],
              index : { unique : true }
            }
});

一致スキーマ

var Match = new Schema({
  'key' : {
    unique: true,
    type: Number,
    default: getId
  },
  'hometeam' : { type: Schema.ObjectId, ref: 'Team' },
  'awayteam' : { type: Schema.ObjectId, ref: 'Team' }
});

一致する出力

[
  {
    "_id": "5112aeaf064432060d000002",
    "team": [
      {
        "key": 1360178863022,
        "_id": "5112aeaf064432060d000003"
      }
    ],
    "__v": 0,
    "key": 1360178863022
  },
  {
    "hometeam": "5106e7ef9afe3a430e000007",
    "_id": "5113b7ca71ec596125000005",
    "__v": 0,
    "key": 1360246730427
  }
]
4

1 に答える 1

0

Mongoose には検証を行うスキーマがありますが、MongoDB にはありません。Mongo はスキーマレスです。つまり、データが何を表しているのかまったくわかりません。したがって、スキーマで過去にそのような変更が許可されていた場合は、作成した混乱をクリーンアップする責任があります。古いスキームのみが持っていた値に対してクエリを実行し、それに対して remove を呼び出してドキュメントを削除することはできますが、それ以外の場合はほとんど手作業です (またはすべてを削除する - これは開発にも最適です)。

于 2013-02-07T18:22:36.567 に答える