0

我有 2 个模式,当我将 Match 打印到网页时会生成以下数据,但是这个 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 回答