【问题标题】:How to fetch the old records from the mongo after the schema change架构更改后如何从 mongo 获取旧记录
【发布时间】:2012-12-10 19:58:06
【问题描述】:

我有一个现有的架构,例如

exports.OldCollectionSchema= new Schema({
Id: { type: Schema.ObjectId },
parentId: { type: Schema.ObjectId },
userId: { type : String }, 
userName: { type : String })

现在,我想通过添加一个新字段type在两个场景中使用上述集合

类型将是场景 a 或场景 b

所以我想获取旧记录 + type = "scenario a" 并在页面中显示它

这怎么可能?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    我相信 Mongoose 有一个 __v 字段表示版本,但我不是 Mongoose 专家,所以我将粘贴您可以执行的简单 hacky 查询:

    db.col.find({type: {$exists: false, $in: ['a']}});
    

    这基本上会说:“获取他们还没有场景的所有记录(基本上是这个模式之前的那些),并将它们与类型为 'a' 的记录结合起来” em>

    编辑

    其实更好的方法就是在这里使用null

    db.col.find({type: {$in: ['a', null]}});
    

    【讨论】:

    • __v 供 Mongoose 内部用于跟踪数组字段编辑,因此不应将其用于此类事情。此处列出的第一个解决方案不起作用,但您编辑的那个看起来不错。
    • 啊,是的,应该在那里使用$or,嗯,无论如何,第二个要好得多。
    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 2023-01-10
    • 2017-01-13
    • 2018-11-29
    • 2014-01-05
    • 2019-10-27
    • 1970-01-01
    相关资源
    最近更新 更多