首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要更新所有文档的现有架构

需要更新所有文档的现有架构
EN

Stack Overflow用户
提问于 2019-11-02 19:01:20
回答 2查看 951关注 0票数 1

我正在更新一个已经保存记录的数据库的架构。如何添加附加字段"deviceAccess",默认为"false“

现有模式:

代码语言:javascript
复制
deviceId: "03",
    switches:[
        {
            _id: '03',
            switchesID:'03',
            switchName:'Laptop'
        }
    ]

我想要的模式:

代码语言:javascript
复制
deviceId: "03",
    switches:[
        {
            _id: '03',
            switchesID:'03',
            switchName:'Laptop',
            deviceAccess: 'False'
        }
    ]

我希望所有现有的设备都是如此!请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-02 20:10:59

编写一个迁移脚本来更新集合中的所有文档:

使用npm包执行以下操作:

安装它:

代码语言:javascript
复制
npm install mongodb-migrate

脚本:

代码语言:javascript
复制
var mongodb = require('mongodb');

exports.up = function(db, next){
    const your_collection = db.collection("your_collection_name");

    yout_collection.update({},
           {$set:{"switches.deviceAccess": false}},
           {multi: true},
           (err, data)=>{
                 //todo
                 next();
           })

};

exports.down = function(db, next){
    next();
};

run:

代码语言:javascript
复制
node ./node_modules/mongodb-migrate -runmm -dbc '{ "host":"<db_hostIp_address>","db":"<db_name>","port":<db_port>}' up

备注:

不要忘记用

deviceAccess: {type: Boolean, default: false}

票数 1
EN

Stack Overflow用户

发布于 2019-11-02 19:18:36

我脑子里有三件事。我推荐第一个。

  • 您根本不需要添加它。如果键deviceAccess不存在,那么将其视为false。您可以利用noSQL的架构少行为。
  • 运行一个update命令来添加新键。只有当集合很小时,才应该这样做。
  • 执行第二个选项,但部分执行。比如,先更新100,然后等待4-10秒,然后更新下一个100 (101-200)。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58674332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档