【问题标题】:How do I update the existing documents' schema?如何更新现有文档的架构?
【发布时间】:2022-02-17 20:35:30
【问题描述】:

我正在使用 mongoose 做一些 MongoDB 操作。

一开始分类是数字,

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const sampleSchema = new Schema({
 category: {
    type: Number,
 }
})
module.exports = mongoose.model("SampleSchema", sampleSchema);

现在category变成了String,所以我就这样改了model

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const sampleSchema = new Schema({
 category: {
    type: String,
 }
})
module.exports = mongoose.model("SampleSchema", sampleSchema);

问题是,我已经在这个集合中插入了 200 条记录。有没有办法用字符串更新类别值并将其类型更改为字符串?

【问题讨论】:

  • 你可以试试这个方法。将category 字段类型更改为mixed。然后对集合运行更新以将数字值转换为字符串。完成后,您可以将字段类型更改为您真正想要的 - 字符串。
  • 成功了,谢谢@prasad_

标签: node.js mongodb mongoose


【解决方案1】:

请通过查询获取所有数据并循环更新。

喜欢:

db.tableName.find( { 'status' : { $type : 1 } } ).forEach( function (val) {   
  val.status = new String(val.status);
  db.tableName.save(val);
});

【讨论】:

  • 这项工作是作为更新还是创建新记录?
  • 这将更新集合中的现有记录。
  • 感谢您的帮助:)
【解决方案2】:

我将category 更改为mixed,这可以很好地处理数字和字符串。

感谢@prasad_的帮助

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2019-11-18
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    相关资源
    最近更新 更多