【问题标题】:Mongodb - How to remove element of documentMongodb - 如何删除文档元素
【发布时间】:2013-02-08 02:22:36
【问题描述】:

当我将 Match 打印到网页时,我有 2 个模式并生成以下数据,但是这个 team[] 字段,我相信它在开发的前一个点就在那里,我已经设法获得hometeam 保存到正确的位置,我如何摆脱这个字段,因为它是不必要的?

团队架构

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
  }
]

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    Mongoose 有一个用于验证的模式,但 MongoDB 没有。 Mongo 是无模式的,这意味着它完全不知道您的数据应该代表什么。因此,如果您的架构过去允许进行此类更改,那么您有责任清理您造成的混乱。您可以对只有旧方案才有的值进行查询,然后调用 remove 来删除文档,但除此之外,它主要是体力劳动(或丢弃所有内容——这对开发也很有好处)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2021-11-27
      • 1970-01-01
      • 2013-06-02
      相关资源
      最近更新 更多